【问题标题】:How to send a package to PyPi?如何将包发送到 PyPi?
【发布时间】:2011-04-09 03:43:56
【问题描述】:

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

  • 什么是文件层次结构?
  • 我应该如何命名文件?
  • 我应该使用 distutils 创建 PKG-INFO 吗?
  • 我应该在哪里包含我的文档(用 sphinx 制作)?

【问题讨论】:

标签: python packaging distutils python-sphinx pypi


【解决方案1】:

我推荐阅读The Hitchhiker's Guide to Packaging。具体来说,您应该查看Quick Start section,它描述了如何:

  1. 规划您的项目
  2. 描述您的项目
  3. 创建您的第一个版本
  4. 使用 Python 包索引 (PyPI) 注册您的包
  5. 上传您的版本,然后拿起毛巾拯救宇宙!

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

更新回复:如何命名文件

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

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

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

【讨论】:

    【解决方案2】:

    一个例子永远是了解如何做的最好方法:

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

    【讨论】:

      【解决方案3】:

      也许this CheeseShopTutorial 对你有帮助。从那里:

      提交包到包 索引

      如果你有一些 Python 模块或包你想要 与 Python 社区分享,我们很乐意将它们包含在 Python 包索引!首先,如果你还没有这样做,你会想要 让您的项目井井有条。您可以遵循以下指南 项目文件和目录布局。之后,您将需要阅读 关于创建发行版的 Python 文档: http://docs.python.org/distutils/index.html.

      您还可以查看 Tarek 的“专家 Python 编程”一书中的 Writing a Package in Python by Tarek Ziadé,其中详细解决了有关开发和分发的问题

      【讨论】:

        【解决方案4】:

        Matthew Rankin 的回答告诉您如何组织您的项目文件层次结构,但我发现每次我想在 PyPI 上更新项目时都必须查找要执行的命令。所以他们在这里:

        As described on the PyPi site:

        【讨论】:

          【解决方案5】:

          最重要的是正确准备您的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

          【讨论】:

            猜你喜欢
            • 2018-01-01
            • 2018-05-06
            • 2022-10-04
            • 2017-11-14
            • 2012-03-02
            • 2010-10-21
            • 2017-02-22
            • 2019-12-12
            • 2020-05-03
            相关资源
            最近更新 更多