Python包管理——简单案例
[Python packaging User Guide][https://packaging.python.org/tutorials/packaging-projects/]
1. 创建简单项目
项目结构
1
2
3
4# 可在D盘文件目录下查看
packaging_tutorial/
example_pkg/
__init__.py- 根目录:packaging_tutorial
- 包:example_pkg
- 包文件标识:__init__.py
2. 创建打包文件
结果项目结构
1
2
3
4
5
6packaging_tutorial/
example_pkg/
__init__.py
setup.py
LICENSE
README.md新增文件
均位于主目录下
setup.py
LICENCE
README.MD
非必须
2.1 setup.py 文件简单编写
此文件是打包的核心文件,用于告知setuptools包信息
此文档的编写示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="example-pkg-HowardSun", # Replace with your own username
version="0.0.1",
author="HowardSun",
author_email="sun2387353@163.com",
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",
],
python_requires='>=3.6',
)name:发布的包名称,需要保证与他人发布包名无冲突。命名规则:字母、数字,-,_
version:版本号
author:作者
author_email:作者邮箱地址
long_description:发布包详细描述,可使用readme.md文件。
url:一般是github\gitlab地址
packages:项目所需要的包,可手动指定或使用find_packages()方式自动补充。
此packages字段比较复杂,可以专门详解
classifiers:添加包相关元信息
2.2 README.md文件编写
不解释
2.3 创建LICENSE文件
用于告知用户相关的授权标准
[License官网][https://choosealicense.com/]
3. 创建发布压缩文件
3.1 安装工具包
1 | python -m pip install --user --upgrade setuptools wheel |
3.2 运行相关命令
1 | python setup.py sdist bdist_wheel |
结果
创建了build文件夹
创建了dist文件夹
example_pkg_HowardSun-0.0.1-py3-none-any.whl
发布文件
example-pkg-HowardSun-0.0.1.tar.gz
发布包的压缩文件
创建了example_pkg_HowardSun.egg-info文件夹
4.上传发布文件
4.1 注册PyPI账号
测试中使用的[Test PyPI][ https://test.pypi.org/account/register/],与正式发布不一致
4.2 安装发布工具包
使用twine发布
1 | python -m pip install --user --upgrade twine |
4.3 运行相关命令
需要使用创建账户时创建的APITOKEN信息验证
1 | python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/* |
5. 安装新发布的包
pip安装即可
1 | python -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-HowardSun |
正常发布到PyPI上并不需要指定url