本文由 简悦 SimpRead 转码, 原文地址 www.cnblogs.com
使用setuptools创建项目
新建工作目录,把要发布的包放进去,并在工作目录中创建setup.py
from setuptools import setup, find_packages
setup(
name = 'mylib',
version = '0.0.1',
description = 'just a simple test',
license = 'MIT License',
author = 'jim',
author_email = '[email protected]',
packages = find_packages(),
platforms = 'any',
# 表明当前模块依赖哪些包,若环境中没有,则会从pypi中自动下载安装!!!
install_requires=['docutils>=0.3'],
# setup.py 本身要依赖的包,这通常是为一些setuptools的插件准备的配置,这里列出的包,不会自动安装。
setup_requires=['pbr'],
# 仅在测试时需要使用的依赖,在正常发布的代码中是没有用的。
# 在执行python setup.py test时,可以自动安装这三个库,确保测试的正常运行。
tests_require=[
'pytest>=3.3.1',
'pytest-cov>=2.5.1',
],
# 但是这些包通常不会使用到,只有当你深度使用模块时,才会用到,这里需要你手动安装
extras_require={
'PDF': ["ReportLab>=1.2", "RXP"],
'reST': ["docutils>=0.3"],
}
# 希望被打包的相对位置的文件
package_data={'':['*.txt'],
'bandwidth_reporter':['*.txt']},
# 需要打包的位于固定位置的文件
data_files=[('', ['conf/*.conf']),
('/usr/lib/systemd/system/', ['bin/*.service'])],
)
拉取依赖项的时候使用镜像站
直接在setup.py的同目录放置一个setup.cfg:
[easy_install]
index_url = https://pypi.tuna.tsinghua.edu.cn/simple
共享安装包到 PyPI 上
上面搞定了安装包在本地的安装,那么下面开始把 mylib 共享到 PyPI 上,那么肯定需要一个 PyPI 的帐号,这个自己去注册吧。
然后进入到刚刚生成的 mylib 的目录下,运行
python setup.py register
在系统中填写我们在 PyPI 上注册的信息,包括用户名、密码,并把这个包名注册到 PyPI 上。(请确保 PyPI 上没有同名的包)
完成后再执行
python setup.py sdist upload
将代码上传到 PyPI。
最后注意几点:
- 上传到 PyPI 上的包很有可能用 pip 或 easy_install 下载失败,提示 can not find a version satisfy request xxxxx. 原因是这个包生成的时候默认是当作 dev 的,所以不能 release,于是要自己手动修改它自动生成的配置文件 setup.cfg,把其中的 tag_build = dev 改成 tag_build =
- 经过试用后发现用 pastescript 生成的包符合 PyPI 的条件可以上传,但是它传上去的只是一个空的包,里面没有 mylib.py 这个文件,也许是需要用其他的参数生成包,而不是 basic_packge;而自己用 python setup.py sdist 生成的包则没有任何问题。
最简单的方法就是在生成包的时候使用 python setup.py sdist --formats=zip,gztar,这样上面两个问题都不存在了