如何将包发送给PyPi?

时间:2010-09-07 11:08:12

标签: python packaging distutils python-sphinx pypi

我写了一个小模块,我想知道打包它的基本步骤是什么,以便将其发送到pypi

  • 文件层次结构是什么?
  • 我该如何命名文件?
  • 我应该使用distutils来创建PKG-INFO吗?
  • 我应该在哪里提供我的文件(用狮身人面像制作)?

5 个答案:

答案 0 :(得分:12)

我建议阅读The Hitchhiker's Guide to Packaging。具体来说,您应该查看Quick Start section,其中介绍了如何:

  
      
  1. 布置您的项目
  2.   
  3. 描述您的项目
  4.   
  5. 制作您的第一个版本
  6.   
  7. 使用Python Package Index(PyPI)注册您的包
  8.   
  9. 上传你的版本,然后抓住你的毛巾并保存宇宙!
  10.   

您还应该查看Current State of Packaging中的Introduction to Packaging section,因为这有助于解决围绕setuptools,distutils,distutils2和分发的一些混淆。

更新Re:如何命名文件

以下摘录来自PEP8,它回答了有关如何命名文件的问题:

  

模块应该有简短的全小写名称。如果提高可读性,则可以在模块名称中使用下划线。 Python包也应该有简短的全小写名称,但不鼓励使用下划线。

     

由于模块名称映射到文件名,并且某些文件系统不区分大小写并且截断长名称,因此选择模块名称相当短很重要 - 这在Unix上不是问题,但它将代码传输到较旧的Mac或Windows版本或DOS时可能会出现问题。

答案 1 :(得分:3)

示例始终是了解如何操作的最佳方式:

http://packages.python.org/an_example_pypi_project/

答案 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

答案 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