0%

Python包管理_实例操作

Python包管理——简单案例

[Python packaging User Guide][https://packaging.python.org/tutorials/packaging-projects/]

1. 创建简单项目

  • 项目结构

    1
    2
    3
    4
    # 可在D盘文件目录下查看
    packaging_tutorial/
    example_pkg/
    __init__.py
    1. 根目录:packaging_tutorial
    2. 包:example_pkg
    3. 包文件标识:__init__.py

2. 创建打包文件

  • 结果项目结构

    1
    2
    3
    4
    5
    6
    packaging_tutorial/
    example_pkg/
    __init__.py
    setup.py
    LICENSE
    README.md
    • 新增文件

      均位于主目录下

      1. setup.py

      2. LICENCE

      3. 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
    22
    import 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:添加包相关元信息

      [官方详解][https://pypi.org/classifiers/],虽然并未研究,但看来比较重要

2.2 README.md文件编写

不解释

2.3 创建LICENSE文件

用于告知用户相关的授权标准

[License官网][https://choosealicense.com/]

3. 创建发布压缩文件

3.1 安装工具包

1
2
python -m pip install --user --upgrade setuptools wheel

3.2 运行相关命令

1
python setup.py sdist bdist_wheel
  • 结果

    1. 创建了build文件夹

    2. 创建了dist文件夹

      1. example_pkg_HowardSun-0.0.1-py3-none-any.whl

        发布文件

      2. example-pkg-HowardSun-0.0.1.tar.gz

        发布包的压缩文件

    3. 创建了example_pkg_HowardSun.egg-info文件夹

    4.上传发布文件

4.1 注册PyPI账号

测试中使用的[Test PyPI][ https://test.pypi.org/account/register/],与正式发布不一致

4.2 安装发布工具包

使用twine发布

1
2
python -m pip install --user --upgrade twine

4.3 运行相关命令

需要使用创建账户时创建的APITOKEN信息验证

1
2
python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*

5. 安装新发布的包

pip安装即可

1
2
python -m pip install --index-url https://test.pypi.org/simple/ --no-deps example-pkg-HowardSun

正常发布到PyPI上并不需要指定url