15

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

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

5 回答 5

12

我推荐阅读The Hitchhiker's Guide to Packaging。具体来说,您应该查看快速入门部分,其中描述了如何:

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

您还应该查看包装介绍部分的包装当前状态,因为这有助于解开围绕 setuptools、distutils、distutils2 和分发的一些混淆。

更新回复:如何命名文件

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

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

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

于 2010-09-07T16:40:11.503 回答
3

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

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

于 2010-09-07T12:44:57.013 回答
2

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

将包提交到包索引

如果您有一些 Python 模块或包想与 Python 社区共享,我们很乐意将它们包含在 Python 包索引中!首先,如果您还没有这样做,您将需要组织您的项目。您可以遵循 ProjectFileAndDirectoryLayout 中的指南。之后,您需要阅读有关创建发行版的 Python 文档:http: //docs.python.org/distutils/index.html

您还可以查看Tarek 的“专家 Python 编程”一书中Tarek Ziadé 撰写的用 Python 编写包,其中详细解决了有关开发和分发的问题

于 2010-09-07T11:26:31.277 回答
0

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

如 PyPi 网站上所述

于 2016-04-15T10:01:19.217 回答
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

于 2018-11-08T03:57:37.330 回答