代码
- 确保你的项目下有
pyproject.toml文件(包的配置信息) - 确保你有pypi的
token(去pypi官网完成认证)
import os
import re
import subprocess
PYPI_TOKEN = "你 PyPI 的 token"
def pack_to_local():
"""打包代码到本地(本地会新增 dist、包名.egg_info文件夹)"""
with open("pyproject.toml", "r") as f:
text = f.read()
name = re.search('name\s*=\s*"(.+)?"', text).group(1)
version = re.search('version\s*=\s*"(.+)?"', text).group(1)
print("{} 这次上传的版本是 {}".format(name, version))
s = input("确认上传:").strip()
assert s == "yes", "已取消打包"
print("正在打包...")
os.system("python -m build")
def upload_to_pypi():
"""本地代码上传到 PyPI"""
print("正在上传...")
os.environ.setdefault("TWINE_USERNAME", "__token__")
os.environ.setdefault("TWINE_PASSWORD", PYPI_TOKEN)
try:
subprocess.run(['twine', 'upload', 'dist/*'], check=True)
print("上传成功")
except Exception as e:
print("上传失败,因为:{}".format(e))
if __name__ == "__main__":
pack_to_local()
upload_to_pypi()