如何发布自己的python包到pypi
如何发布自己的python包到pypi
环境依赖
- setuptools
- twine
- build
以上环境通过pip install
进行安装。
项目配置
确保你的项目目录结构中存在如下文件:
│ LICENSE
│ README.md
│ setup.py
README.md文件可用于最终展现在pypi项目主页的介绍。
核心的配置在于setup.py, 当然也可以配置pyproject.toml
及setup.cfg
达到相同的效果。 本文仅仅针对如何配置setup.py
进行展开, 首先给个模板:
from setuptools import setup
from setuptools import find_packages
with open("README.md", "r", encoding="utf-8") as f:
long_description = f.read()
setup(name='包名称, 也就是pip install的名称',
version='版本号',
description='简单描述',
long_description=long_description,
long_description_content_type='text/markdown',
author='作者',
author_email='作者邮件',
keywords="关键字, 逗号分割",
url='项目主页, 通常为github',
install_requires=[
"enum34;python_version<'3.4'",
"numpy"
],
packages=find_packages(where="src"),
package_dir={"": "src"},
#include_package_data = True,
package_data={
"pytsdk.libs":["*.dll", "*.ini"]
},
platforms=["Windows"],
license='MIT License',
classifiers=[
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Operating System :: Microsoft :: Windows',
'Natural Language :: Chinese (Simplified)',
'Programming Language :: Python :: 3',
'Topic :: Software Development :: Libraries :: Python Modules'
],
)
基本配置如上, 需要格外关注的几个点为:
- long_description_content_type需要调整为
text/markdown
, 默认为text/x-rst
- install_requires列表填写当前包依赖的第三方库, 当pip安装当前包时, 会按照这个列表中的依赖。上述的
enum34;python_version<'3.4'
表示只有当python版本低于3.4时才会安装enum34
这个包。 同时可以通过Package-A @ git+https://example.net/package-a.git@main
这种形式指定链接。详情参考dependency management - packages该项目所需所有源码, 通过方法
find_packages
进行查找, where参数指定查找目录。确保每个python或数据目录下都存在__init__.py文件, 否则find_package无法找到。 - include_package_data设置为True, 保证find_packages时会自动搜索数据文件。 另一种方式是通过
package_data
手动指定。 这里需要特别注意的是目录路径问题。否则运行时出现找不到数据文件的问题。示例中因为dll在pysdk/libs这个目录下, 所以指定key为pysdk.libs。 - classifiers可以从https://pypi.org/classifiers选择
生成部署包
部署包分为两种:
- source distributions,sdists
- binary distributions,wheels
生成方式有两种:
-
python setup.py
生成whl:
python setup.py bdist_wheel
生成sdists
python setup.py sdist
通过
python setup.py --help-commands
可查看更多选项, 比如需要编译则需要添加build
选项 -
安装build, 通过build命令进行生成
首先安装build:
pip install build
生成whl:
python -m build --wheel
生成sdists
python -m build --sdist
部署包都会生成在当前目录的
dist
目录中,sdists
形式生成的是压缩包.tar.gz,wheel
形式生成的时.whl文件。
上传到pypi
- 首先要在https://pypi.org/account/register/上注册账号。
- 然后安装
pip install twine
. - 检查部署包
twine check dist/*
- 没报错则通过
twine upload dist/*
进行上传, 输入API token回车即可
保存API token到用户目录的.pypirc
文件中, 避免每次上传都输入token:
[pypi]
username = __token__
password = <the token value, including the `pypi-` prefix>
建议在上传之前自己pip install xxx.whl测试一下,没有问题再上传,因为但凡上传到了pypi就无法修改,只能删除或者修改版本号再上传。 或者通过
TestPyPI
测试通过之后再上传的pypi。详情参考using testpypi
参考
分类:
框架与工具
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示