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",
description = "孤独终老",
packages = find_packages("qiye"),
package_dir = {"":"qiye"},
package_data = {
"":[".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个文件夹:
开始上传 我们只需要上传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
|