将模块发布到 pip 和 PyPi
Posted
技术标签:
【中文标题】将模块发布到 pip 和 PyPi【英文标题】:Publishing modules to pip and PyPi 【发布时间】:2019-10-01 10:41:55 【问题描述】:我使用 python 创建了一个模块。我想将它发布到 pip 和 PyPi 以便其他人可以轻松下载和使用它。我该怎么做?
【问题讨论】:
先写setup.py
,然后运行python setup.py sdist
,然后上传dist/your_module.tar.gz
到远程服务器。
这无法在单个答案或评论中解释。试试这篇文章。 realpython.com/pypi-publish-python-package
【参考方案1】:
答案很容易在互联网上找到。我刚刚引用this site 来回答你。您可以按照以下步骤操作:
在PyPi
上创建一个帐户。
创建一个README.md
文件作为用户说明(强烈推荐)。
创建setup.cfg
文件,写入如下内容:
[metadata]
description-file = README.md
通过引用 this website 创建一个 LICENSE
文件。
正如@Yang HG 提到的,写一个setup.py
文件,然后运行python setup.py sdist
。
使用twine
上传您的发行版。首先,您需要pip install twine
,然后运行twine upload dist/*
。
最后,您的发行版可以在https://pypi.org/project/YOURPACKAGENAME/
上查看
【讨论】:
【参考方案2】:这在Packaging Python Projects 中有详细记录。
创建 README.md
创建一个名为 README.md
的文件并根据需要对其进行编辑(在 Markdown 中)。
创建setup.py
setup.py
是setuptools
的构建脚本。它告诉setuptools
你的包(例如名称和版本)以及要包含的代码文件。
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="example-pkg-your-username",
version="0.0.1",
author="YOUR NAME",
author_email="YOUR EMAIL",
description="A small example package",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/pypa/sampleproject",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
)
创建许可证
创建一个名为LICENSE
的文件并从here 中选择您的内容。
生成分发档案
下一步是为包生成分发包。这些是上传到包索引的档案,可以通过 pip 安装。
我们首先需要确保安装了wheel
和setuptools
:
python3 -m pip install --user --upgrade setuptools wheel
现在我们需要从setup.py
所在的同一目录运行以下命令:
python3 setup.py sdist bdist_wheel
上传分发档案
建议在实际 PyPi 之前上传到TestPyPi - 虽然我不会介绍这部分。 以下步骤展示了如何将包上传到 PyPi:
-
安装
twine
:
python3 -m pip install --user --upgrade twine
-
注册PyPi。
运行
twine
将dist
包上传到PyPi:
python3 -m twine upload dist/*
【讨论】:
以上是关于将模块发布到 pip 和 PyPi的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pip 和 PyPI 安装 Python 模块单个文件?