在Pypi上发布自己的Python包 £神魔★判官ぃ 2022-04-23 07:58 162阅读 0赞 使用过Python编程都知道, Python安装都是可以使用`pip`安装搞定: > sudo pip install `<package name>` 那么如何发布一个自己的pypi Python包呢. 首先安装一个`setuptools` > sudo pip install setuptools 1. 第一步, 就是到[pypi][]上注册自己的用户, 点击"Register", 填写自己的用户名, 密码, 邮件地 2. 第二步, 准备 [setup.py/setup.conf][setup.py_setup.conf] 文件, 它是放在你的包的根目录的, 这一步直观重要, 包括要发布的包的名字, 版本, license, 描述, 特性(classifier)等等, 下面是我自己包的一个setup.py文件的内容, 基本上只需要在这个上面修改就可以了, 具体如下: #!/usr/bin/env python # coding=utf-8 from setuptools import setup, find_packages setup( name='<项目的名称>', version=<项目版本>, description=( '<项目的简单描述>' ), long_description=open('README.rst').read(), author='<你的名字>', author_email='<你的邮件地址>', maintainer='<维护人员的名字>', maintainer_email='<维护人员的邮件地址', license='BSD License', packages=find_packages(), platforms=["all"], url='<项目的网址,我一般都是github的url>', classifiers=[ 'Development Status :: 4 - Beta', 'Operating System :: OS Independent', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Programming Language :: Python', 'Programming Language :: Python :: Implementation', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Topic :: Software Development :: Libraries' ], ) 需要注意的上面的字段: * version - 就是包的发布版本, 可以直接写在这里, 也可以从其他地方引用 * long\_description - 必须是rst(reStructuredText) 格式的, 因为这个里面的内容是显示在pypi包首页上, 具体rst的语法可以参考: [点我][Link 1], 我的long\_description 是同目录下的README.rst 的内容, 同事这个README也是我的github项目首页. * packages - 申明你的包里面要包含的目录, 比如\[‘mypackage’, ‘mypackage\_test’\] 可以是这种使用我的示例, 让setuptools自动决定要包含那些包 * install\_requires - 申明依赖包, 安装包时pip会自动安装: 格式如下 install_requires=[ 'Twisted>=13.1.0', 'w3lib>=1.17.0', 'queuelib', 'lxml', 'pyOpenSSL', 'cssselect>=0.9', 'six>=1.5.2', 'parsel>=1.1', 'PyDispatcher>=2.0.5', 'service_identity', ] 1. 装备requirements.txt 和 test-requirements.txt, 这个申明包的依赖包和跑自动化测试的测试依赖包, 具体格式示例如下: mock>=2.0.0 flake8>=3.2.1 eventlet>=0.19.0 nose2>=0.6.5 cov_core>=1.15.0 virtualenv>=15.1.0 test-requiremtns.txt的格式和上面的格式一样. 有了它们, 就可以自己手动安装依赖包了 > pip install -r requirements.txt > 有了它们, 结合tox等工具, 可以非常方便的加入自动化测试. 1. 准备一个项目的README.rst文件, 前面也提到了它的格式要求, 第一次发包, 可以直接copy别人的格式, 这种东西熟能生巧, 多写几次就会了. 2. 准备好上面的步骤, 一个包就基本完整了, 剩下的就是打包了(cd 到包的根目录): 可以使用下面命令打包一个源代码的包: > python [setup.py][] sdist build 这样在当前目录的dist文件夹下, 就会多出一个tar.gz结尾的包了: 也可以打包一个wheels格式的包, 使用下面的命令就可以了: > python [setup.py][] bdist\_wheel --universal 这样会在dist文件夹下面生成一个whl文件. 6. 上传生成的包, 可以使用setuptools, 或者twine上传, 推荐使用twine上次, 因为使用setuptools上传时, 你的用户名和密码是明文或者未加密传输, 安全起见还是使用twine吧 > `上传 source 包` > python [setup.py][] sdist upload > `上传pre-compiled包` > python [setup.py][] bdist\_wheel upload 使用twine上传, 先安装twine > sudo pip install twine > twine upload dist/\* > 提示你输入前面注册的账户和密码, 上传成功就搞定了, 就可以使用pip 在任何地方安装了. [pypi]: https://pypi.python.org/pypi [setup.py_setup.conf]: http://setup.py/setup.conf [Link 1]: http://rest-sphinx-memo.readthedocs.io/en/latest/ReST.html [setup.py]: http://setup.py
还没有评论,来说两句吧...