python模块打包上传pypi

python模块打包上传pypi


pypi注册

先在pypi.org上注册账户密码,务必牢记

模块尽量都保存在包中,如果要进行模块的定义,首先定义的就是包,

所以每个目录下需要一个__init__.py的文件,可以为空内容,但必须有。

我的包结构:

项目的根目录,保存所有的项目代码
	程序执行文件,main.py,移动程序
	setup.py,打包及其信息说明
		【包】包名,从此处开始到末尾,统称为模块
			__init__.py
			【包】包名
				__init__.py
				【包】包名
					__init__.py
					源文件名.py

这是当时我做的包结构:

PS D:\demo> tree /f   
卷 Data 的文件夹 PATH 列表
卷序列号为 94F1-75D8
D:.
│  main.py
│  setup.py
│
└─qiye
    │  __init__.py
    │
    └─github
        │  __init__.py
        │
        └─io
                game1.py
                __init__.py

在根目录创建 " setup.py " 文件 ( 与 main.py 同级 )
假如在根目录没有setup.py文件,则创建。
包设定

from setuptools import setup,find_packages
setup(
    name = "qiye-game1",       #包的名称
    version = "0.1.1",			#版本
    author = "qiye",    		#作者名
    #url = "qiyenull.github.io", 	网站,不是必要,此网站需要存在且未被占用
    description = "孤独终老",		#包的信息说明
    packages = find_packages("qiye"),   	#打包时,开始的目录
    package_dir = {"":"qiye"},		# 告诉 setuptools 包都在 qiye 下
    package_data = {
    ## 包含 data 文件夹下所有的 *.dat 文件
        "":[".txt", ".info", "*.properties", ".py"],
        "":["data/*.*"],
    },
    # 取消所有测试包
    exclude = ["*.test", "*.test.*", "test.*", "test"]

)

定义完成打包的部署文件后,进行程序的执行,执行时可以设置多种类型的包

建议写main.py文件

import qiye.github.io.game1 as msg
print(msg.get_info())

这样使用时可以快速调用


虚拟环境

使用 pip 下载虚拟环境

pip install virtualenv

可在C:\Program Files\Python38\Lib\venv\scripts\nt找到activate.bat文件
打开cmd,切换到这个目录,执行activate.bat
可以发现成功进入到虚拟环境**VENV_PROMPT**中
请添加图片描述
验证能否正常使用

__VENV_PROMPT__C:\Program Files\Python38\Lib\venv\scripts\nt>pip list

如果正常,会显示已安装的python模块名和版本,即可正常使用


打包上传

在虚拟环境下来到要上传文件的根目录

__VENV_PROMPT__D:\demo>

测试文件是否能够使用

__VENV_PROMPT__D:\demo>dir
 驱动器 D 中的卷是 Data
 卷的序列号是 94F1-75D8

 D:\demo 的目录

2022/03/21  13:14    <DIR>          .
2022/03/21  13:14    <DIR>          ..
2022/03/17  07:46                59 main.py
2022/03/21  13:14    <DIR>          qiye
2022/03/18  11:11               435 setup.py
               2 个文件            494 字节
               3 个目录 83,926,605,824 可用字节

__VENV_PROMPT__D:\demo>python main.py
****************************************
*                                  *****
**                                  ****
***        qiye is so boring!        ***
****                                  **
*****                                  *
****************************************
None

__VENV_PROMPT__D:\demo>

验证完成后,安装几个必要软件

pip install twine    上传需要
pip install wheel	 打包需要

开始打包

__VENV_PROMPT__D:\demo>python setup.py sdist bdist_wheel

他会出现打包的过程,假如报错,那就有可能setup.py文件语法出问题了,请根据报错提示定位修改,不然就是少必要软件了
成功会出现2个文件夹:
python模块打包上传pypi_第1张图片

开始上传
我们只需要上传dist文件夹里的所有文件就行

twine upload dist/*    #上传

他会提示你输入username和password
输入你在pypi注册时的用户名和密码
能正常上传就行


这里上传可能会出现了几种问题,(我把坑踩完了) 1、出现twine不会被识别为内部或外部命令

解决:把C:\Users\myname\AppData\Roaming\Python\Python36\Scripts加入系统变量

2、HTTPError: 403 Forbidden from https://upload.pypi.org/legacy/
Invalid or non-existent authentication information. See https://pypi.org/help/#invalid-auth for more information.
用户密码错误

3、HTTPError: 400 Bad Request from https://upload.pypi.org/legacy/
User ‘xxx’ does not have a verified primary email address. Please add a verified primary email before attempting to upload to PyPI. See https://pypi.org/help/#verified-email for more information.
自己账号的主邮箱没有验证,看看自己邮箱有没有pypi发来的邮件

下载模块

pip install 你的模块名

pip install qiye-game1

python模块打包上传pypi_第2张图片

你可能感兴趣的:(python)