Python 模块的本地发布以及上传模块到 PyPI

当我们完成了某个模块开发后,可以将其对外发布,其他开发者也可以以”第三方扩展库“的方式使用我们的模块。

我们按照如下步骤即可实现模块的发布:

一、模块的本地发布

1.为模块文件创建如下结构的文件夹、包和模块文件(Demo 是对外发布的模块名):
在这里插入图片描述
demo1.py 的内容结构如下:

# -*- coding: utf-8 -*-

"""
    @Author: runqian_lee
    @Blog: https://blog.csdn.net/qq_44214671
    @Time: 2020/12/17 15:50
    @Desc: demo1 模块设计
"""


def func():
    print('This is Demo1')

demo2.py 的内容结构如下:

# -*- coding: utf-8 -*-

"""
    @Author: runqian_lee
    @Blog: https://blog.csdn.net/qq_44214671
    @Time: 2020/12/17 15:51
    @Desc: demo2 模块设计
"""


def func():
    print('This is Demo2')


2.在 release 文件夹中创建一个名为 setup.py 文件,在文件中输入以下内容:

from distutils.core import setup


setup(
    name='Demo',  # 对外我们模块的名字
    version='1.0',  # 版本号
    description='测试本地发布模块',  # 描述
    author='runqian_lee',  # 作者
    author_email='[email protected]',
    py_modules=['Demo.demo1', 'Demo.demo2'],  # 要发布的模块
)


3.构建一个发布文件。打开终端,cd 到 release 目录下,键入以下命令:

python setup.py sdist

执行完毕后,目录的结构如下:
在这里插入图片描述

4.本地安装模块
将发布安装到你的本地计算机上。仍在 cmd 命令行模式下操作,进 setup.py 所在目 录,键入命令:

python setup.py install


5.安装成功后,我们进入 python 工程目录:venv/Lib/site-packages 目录(第三方模块都安装的这里,python 解释器执行时也会搜索这个路径):
在这里插入图片描述
在这里插入图片描述

6.使用 import 导入该模块进行使用:

from Demo import demo1, demo2


demo1.func()
demo2.func()

运行结果:

This is Demo1
This is Demo2

二、上传模块到 PyPI

将自己开发好的模块上传到 PyPI 网站上,将成为公开的资源,可以让全球用户自由使用。上传步骤如下:

1.注册 PyPI 网站,填写对应的名字、邮箱、用户名和密码即可完成注册:
在这里插入图片描述

在这里插入图片描述
Tips: 注册后需要验证邮箱:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.创建用户信息文件 .pypirc 文件:

  • 方式1:使用命令(适用 Linux)
    输入命令:python setup.py register 并执行后 ,然后输入用户名和密码即可。

  • 方式2:使用文件(适用 windows,Linux)
    在用户目录:user目录下创建一个文件名为 .pypirc, 输入以下内容:

[distutils] 
index-servers=pypi 

[pypi] repository = https://upload.pypi.org/legacy/ 
username = 账户名 
password = 密码

Tips:

  • Linux 的用户目录: ~/.pypirc
  • Windows 的用户目录是: c:/user/用户名
  • 在 Windows 下直接创建不包含文件名的文件会失败,因此创建时文件名为 “.pypirc.”, 前后都有两个点即可。

3.上传并远程发布:
进入 setup.py 文件所在目录,使用命令:python setup.py sdist upload,即可以将模块代码上传并发布。

我在这里出现了以下错误:

error: Upload failed (403): The user 'R_lee' isn't allowed to upload to project 'demo'

可能是模块命名问题,与他人的模块名有冲突,官网上有解释:
在这里插入图片描述
所以我将原模块名:Demo,改成了 Demo01,再尝试后成功上传:

(venv) E:\PythonProject\release>python setup.py sdist upload
running sdist
running check
warning: check: missing required meta-data: url

warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

warning: sdist: standard file not found: should have one of README, README.txt

writing manifest file 'MANIFEST'
creating Demo01-1.0
creating Demo01-1.0\Demo01
making hard links in Demo01-1.0...
hard linking setup.py -> Demo01-1.0
hard linking Demo01\__init__.py -> Demo01-1.0\Demo01
hard linking Demo01\demo1.py -> Demo01-1.0\Demo01
hard linking Demo01\demo2.py -> Demo01-1.0\Demo01
Creating tar archive
removing 'Demo01-1.0' (and everything under it)
running upload
Submitting dist\Demo01-1.0.tar.gz to https://upload.pypi.org/legacy/
Server response (200): OK

上传成功后就可以看到你上传的模块了:
在这里插入图片描述

4.下载安装并使用上传的模块
当你看到在 Python 官网上也能像安装其他第三方包一样安装你自己上传的包,是不是有一种成就和自豪感!
在这里插入图片描述
安装同样可以使用 pip 工具进行安装:pip install Demo01,或者通过 PyCharm 中的其它安装方式进行安装。
在这里插入图片描述
安装成功后同样使用 import 导入包:

from Demo01 import demo1, demo2


demo1.func()
demo2.func()

运行结果:

This is Demo1
This is Demo2

猜你喜欢

转载自blog.csdn.net/qq_44214671/article/details/111317649