python setup.py 管理
发布项目遇到了坑……特此记录。
How to write setup.py: https://docs.python.org/2/distutils/setupscript.html
Setup.py
setup.py是python的一个项目发布管理工具。我们常常安装别人的代码也是借助setup.py。
我的项目的setup.py示例:
from setuptools import setup, find_packages setup(
name="rdir",
version="0.52",
description="More powerful recursive dir. Support HTML pretty view in tree structure.",
long_description="Documentation and bug report: http://www.github.com/Lhfcws/rdir \
<br/><br/>\
Sorry for the deploy bugs in the previous versions\
<br/><br/>\
If you came across ImportError or NoScriptError, please `rm /usr/local/bin/rdir*`",
author="Lhfcws Wu",
author_email="lhfcws@gmail.com",
url="http://www.github.com/Lhfcws/rdir",
license="MIT",
packages=["rdir", "rdir/core", "rdir/generateHTML"],
include_package_data=True,
package_data={"rdir": ["rdir/generateHTML/template/*.html", "rdir/generateHTML/bin/*.js"]},
install_requires=['colorama', 'pyquery'],
keywords=["dir", "doc", "pydoc", "html"],
)
项目主要结构:
|-- rdir
| |-- core
| `-- generateHTML
(我上面省略了我的py文件,__init__.py肯定是有的)
name就是你的项目名了,version是版本,这两个会在打包时自动生成为你的项目名(比如 rdir-0.52)。description到license不多说。
packages很重要,它代表你有哪些package要打入发布中。Python package的概念很简单,一个目录下有__init__.py就是一个package。像我如上有三个package,于是就指定 packages=["rdir", "rdir/core", "rdir/generateHTML"] 。大家还看到我引入了一个 find_packages()函数没用,当你的每个package下的__init__.py里都import了当前package下的module时,find_packages()会自动帮你找到所有的包。
然后我项目里会有一些非py文件,比如html和js等,这时候就要靠 include_package_data 和 package_data 来指定了。package_data一般写成 {'your_package_name': ["files"]}。keywords便于pypi索引。
然后include_package_data还没完,还需要一个MANIFEST.in文件:
include rdir/generateHTML/template/*.html rdir/generateHTML/bin/*.js
这个时候才会真正帮你自动copy文件到打包中。
关于MENIFEST.in请参见 https://docs.python.org/2/distutils/sourcedist.html
额外插一个常用的scripts,scripts配置会将对应的py脚本安装到你的 /usr/local/bin 目录下并在import时是优先执行的。因此你如果有了scripts,你的site-packages里的egg包就会不起作用被覆盖了。这时候就会见到恼人却又不知为何的ImportError,去掉scripts配置又发现No Script Error。其实删掉bin下的scripts就解决问题了。
最后欢迎试用 https://pypi.python.org/pypi/rdir :加强版的dir,提供多种模式(命令行、文件、html)查看一个对象递归的结构以及对应的文档。
可通过pip或easy_install安装 sudo pip install rdir。
python setup.py 管理的更多相关文章
- Python安装mysql-python错误提示python setup.py egg_info
做python项目,需要用到mysql,一般用python-mysql,安装时遇到错误提示如下: Command "python setup.py egg_info" failed ...
- python setup.py uninstall
I have installed a python package with python setup.py install How do I uninstall it? ============== ...
- python setup.py install 报错ImportError: No module named setuptools
学习光荣之路python课程时,使用python setup.py install安装其他模块时,第一次安装某模块成功了.安装另一模块却报错ImportError: No module named s ...
- pip安装icu失败:Command "python setup.py egg_info" failed with error code 1 in
问题 Mac 下通过 pip 安装 icu 失败. 解决办法及原因 问题的原因是因为icu库中的某一行代码找不到一个文件,获取不到ICU_VERSION的值. # Install icu brew i ...
- Command "python setup.py egg_info" failed with error code 10
1:今天系统重装以后,下载了新的版本的python3.6.1.然后想通过pycurl模块测试URL,突然发现windows10下我无法通过pip安装pycurl模块了,报错内容如下 Collectin ...
- Command "python setup.py egg_info" failed with error code 1一种问题的解决方法
问题描述:无论是你在pycharm中直接使用import and install命令,还是pip的时候出现了Command "python setup.py egg_info" f ...
- Command "python setup.py egg_info" failed with error code 1 in C:\Users\w5659\AppData\Local\Temp\pip-install-t7uomu4r\xa dmin\
Error msg: C:\Users\w5659>pip install xadmin Collecting xadmin Using cached https://files.pythonh ...
- pip安装mysql-python报错:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-enRreC/mysql-python/
公司业务开发,用python开发网站;需要使用模块MySQLdb. 我直接pip install MySQLdb,当然不成功了,模块名字因该是mysql-python pip install mysq ...
- python2 使用pip安装psycopg2出现错误:Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-mvzdNj/psycopg2/
公司业务需求,开发语言python2,需要使用数据库:postgresql,需要安装模块psycopg2这个模块, 使用pip install psycopg2 报错: Command "p ...
随机推荐
- Windows Server 2012 R2桌面化详细设置图解
一.任务栏左下角启动服务器管理器,然后进行设置. 1.登录不显示服务器管理器 2.本地服务器,看到右边的IE增强的安全配置,如图所示,关闭两项内容.这样就关闭了IE增强安全提示框. 3.“工具”菜单, ...
- MySQL 5.6 OOM 问题解决分享【转】
本文来自:杨德华的原创分享 | MySQL 5.6 OOM 问题解决分享 延伸阅读:Linux的内存回收和交换 当遇到应用程序OOM的时候,大多数时候只能用头疼来形容,应用程序还可以通过引流来临时重启 ...
- ThinkPHP函数详解:U方法
U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:U('地址','参数','伪静态','是否跳转','显示域名');在模板中使用U方法而不是固定 ...
- Android studio安装
1.首先上甲骨文公司的官方网站下载JDK的安装包,根据自己电脑的操作系统选择正确的版本下载.不知道下载地址的同学可以百度一下很快就能搜到.下载还的安装包如下图所示. 2.点击下载好的JDK安装程序,百 ...
- [Sass]混合宏
[Sass]混合宏-声明混合宏 如果整个网站中有几处小样式类似,比如颜色,字体等,在 Sass 可以使用变量来统一处理,那么这种选择还是不错的.但当你的样式变得越来越复杂,需要重复使用大段的样式时,使 ...
- MVC Code First 自动生成数据库时生成的表名会多了一个s
如图:我的类文件都是不带s的
- js 函数
函数:封装了某一块功能 四要素: 1.返回类型 2.函数名 3.参数列表4.函数体强类型语言 返回类型 函数名 首字母大写 参数列表string(字符串) Show (int a){ 函数体 }弱类型 ...
- 3dmax导出到blend或者vs中
使用3dmax将模型导成obj格式的时候,可以导出材质或者不导出. 1.如果不导出,则按下图不勾选导出材质和创建材质库选项.这样生成的obj是可以直接再blend或者vs中打开的. 2.如果导出,不仅 ...
- KNN识别图像上的数字及python实现
领导让我每天手工录入BI系统中的数据并判断数据是否存在异常,若有异常点,则检测是系统问题还是业务问题.为了解放双手,我决定写个程序完成每天录入管理驾驶舱数据的任务.首先用按键精灵录了一套脚本把系统中的 ...
- zeromq系列
ZeroMQ系列 之NetMQ 一:zeromq简介 二:NetMQ 请求响应模式 Request-Reply 三:NetMQ 发布订阅模式 Publisher-Subscriber 四:NetMQ ...