一、创建包
新建文件夹
my-package
,文件夹下创建如下setup.py
(务必为此名字)文件# encoding: utf-8 from setuptools import setup, find_packages setup( name="demo", # egg包名 version="0.0.9", description="get http headers", author="heroicai", author_email="[email protected]", zip_safe=False, license='MIT', install_requires=['requests>=2.7.0', ], # 依赖包 # 包含src中所有的包,并排除一些特定的包 packages=find_packages("src", exclude=["*.tests", "*.tests.*"]), package_dir={"": "src"}, # 告诉setuptools在src目录下找包 package_data={ "": ["*.txt"], # 任何包中含有txt的文件 "demo": ["data/*.dat", "doc/*.txt"], # demo包中data目录下的dat文件 } )
将程序的源代码均置于
src
文件夹下,该文件夹包含demo包和该包对应的数据及文档文件,最终目录结构如下图:
二、安装包
1、进入
my-package
目录,查看python setup.py
命令帮助2、根据提示,执行
python setup.py --help-commands
命令查看更详细的帮助。从帮助文档可以看出,bdist_egg命令可将包打包为egg3、执行
python setup.py -q bdist_egg
完成egg打包,打包后my-package目录如下图,可见打包过程中新建了build
和dist
文件夹,其中dist
文件夹下,包含demo-0.0.9-py2.egg
(ps: 同理可使用python setup.py -q bdist_wininst
打包为exe
可执行文件,此方法可直接在windows上像普通程序一样双击完成安装)注: 用zip软件解压生成的
demo-0.0.9-py2.7e
包,查看该egg包目录结构如下:4 为了不受本地已有环境的干扰,此处选择在虚拟工作环境
my-proj-env
中安装demo包:首先将my-package
文件夹放入虚拟工作环境中;接着进入my-package
目录,执行python setup.py install
,安装过程中会自动下载demo包依赖的requests包ps:另外一种手动安装egg包的方式是:将
demo-0.0.9-py2.egg
包直接放到虚拟工作目录的lib > site-packages
路径下,并在easy-install.pth
文件添加egg包路径引用,如下图:5 验证demo包是否安装:如下图所示,不仅成功安装demo包,对应的依赖包
requests
也一并安装完毕。
三、卸载包
执行
pip uninstall demo
命令,即可完成卸载demo包
四、总结
静默打包
python setup.py -q bdist_egg
静默安装包
python setup.py -q install
PS:pip包推荐用pip install --no-deps .
(注意:结尾有个.
,代表当前路径) 代替 python setup.pyinstall
,并且将依赖的包写入setup_requires.txt
文件,再调用pip install -r setup_requires.txt
完成依赖包安装
pip uninstall demo
参考
[1] https://pythonhosted.org/an_example_pypi_project/setuptools.html
[2] http://python-packaging.readthedocs.org/en/latest/minimal.html
[3] http://python-packaging-user-guide.readthedocs.org/en/latest/installing/