我写了一个小模块,我想知道打包它的基本步骤是什么,以便将其发送到pypi:
答案 0 :(得分:12)
我建议阅读The Hitchhiker's Guide to Packaging。具体来说,您应该查看Quick Start section,其中介绍了如何:
- 布置您的项目
- 描述您的项目
- 制作您的第一个版本
- 使用Python Package Index(PyPI)注册您的包
- 上传你的版本,然后抓住你的毛巾并保存宇宙!
醇>
您还应该查看Current State of Packaging中的Introduction to Packaging section,因为这有助于解决围绕setuptools,distutils,distutils2和分发的一些混淆。
以下摘录来自PEP8,它回答了有关如何命名文件的问题:
模块应该有简短的全小写名称。如果提高可读性,则可以在模块名称中使用下划线。 Python包也应该有简短的全小写名称,但不鼓励使用下划线。
由于模块名称映射到文件名,并且某些文件系统不区分大小写并且截断长名称,因此选择模块名称相当短很重要 - 这在Unix上不是问题,但它将代码传输到较旧的Mac或Windows版本或DOS时可能会出现问题。
答案 1 :(得分:3)
示例始终是了解如何操作的最佳方式:
答案 2 :(得分:2)
也许this CheeseShopTutorial对你有所帮助。从那里:
将包提交给包裹 索引
如果你有一些你想要的Python模块或软件包 与Python社区分享,我们很乐意将它们包含在内 Python包索引!首先,如果你还没有这样做,你会想要的 让你的项目井井有条。您可以遵循以下指南 ProjectFileAndDirectoryLayout。在那之后,你会想要阅读 有关创建发行版的Python文档: http://docs.python.org/distutils/index.html
您还可以查看Tarek的“专家Python编程”一书中的Writing a Package in Python by Tarek Ziadé,其中详细介绍了有关开发和分发的问题
答案 3 :(得分:0)
Matthew Rankin的回答告诉你如何组织你的项目文件heirarchy,但我发现自己每次想要在PyPI上更新项目时都要查找执行的命令。所以这里是:
As described on the PyPi site:
setup.py
文件(here's an example)
python setup.py sdist
python setup.py bdist_wheel
python setup.py register
twine upload dist/*
在PyPi网站上查找您的包: https://pypi.python.org/pypi?%3Aaction=index
在另一台机器上尝试运行:
pip install [your package name]
答案 4 :(得分:0)
最重要的是正确准备setup.py
。然后:
setup.py sdist bdist_wheel
生成分发存档至dist/
文件夹twine upload dist/*
将档案上传到PyPi(使用您的PyPi用户名/密码)以下是setup.py
的示例:
from setuptools import setup, find_packages
with open('README.md') as readme_file:
README = readme_file.read()
with open('HISTORY.md') as history_file:
HISTORY = history_file.read()
setup_args = dict(
name='elastictools',
version='0.1.2',
description='Useful tools to work with Elastic stack in Python',
long_description_content_type="text/markdown",
long_description=README + '\n\n' + HISTORY,
license='MIT',
packages=find_packages(),
author='Thuc Nguyen',
author_email='gthuc.nguyen@gmail.com',
keywords=['Elastic', 'ElasticSearch', 'Elastic Stack', 'Python 3', 'Elastic 6'],
url='https://github.com/ncthuc/elastictools',
download_url='https://pypi.org/project/elastictools/'
)
install_requires = [
'elasticsearch>=6.0.0,<7.0.0',
'jinja2'
]
if __name__ == '__main__':
setup(**setup_args, install_requires=install_requires)
您可以在此处找到更多详细的教程:https://medium.com/@thucnc/how-to-publish-your-own-python-package-to-pypi-4318868210f9