我正在尝试将我的python包发布到私有存储库。我遵循官方指南https://packaging.python.org/en/latest/tutorials/packaging-projects/一切似乎都很好。这是终端输出:
(venv) C:UsersxxxPycharmProjectsmy_package>twine upload --config-file .pypirc -r pypi dist/*
Uploading distributions to http://xxx/pypi/simple/
Enter your password:
Uploading my_package-0.1-py3-none-any.whl
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8.03k/8.03k [00:01<00:00, 4.83kB/s]
Uploading my-package-0.1.tar.gz
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.40k/7.40k [00:00<00:00, 10.3kB/s]
但发布后,我无法在存储库中看到我的包,无论是在浏览器中打开url,还是通过pip安装它。
我注意到.whl在名称中带有下划线,而.tar.gz则带有破折号。这可能是问题所在吗?我怎样才能找出问题所在?
当然,包是上传到私有存储库还是公共存储库并不重要。你甚至可以不上传到Git发布它。
你可以在的4个基本步骤中做到这一点
- 创建一个python包
- 写入
setup.py
- 生成程序包
- 通过
twine
发布到PyPI
创建一个python包
在下面的示例中,demoverflow
文件夹包含__init__.py
,这使demoverflow
成为一个python包。
└── demoverflow
├── demo.py
└── __init__.py
# demo.py
class Demo:
...
在__init__.py
导入Demo
,以便能够从demoverflow
(如:from demoverflow import Demo
(导入
# __init__.py
from demo import Demo
写入setup.py
from setuptools import setup, find_packages
setup(
name="demoverflow",
version="0.0.1",
author="Firstname Lastname",
author_email="<demoverflow@support.com>",
description="My demo package",
packages=find_packages(),
install_requires=[],
keywords=['python'],
classifiers=[
"Development Status :: 1 - Planning",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Operating System :: Unix",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
]
)
注意:在构建包之前,您应该具有以下文件结构
├── demoverflow
│ ├── demo.py
│ └── __init__.py
└── setup.py
所以setup.py
和你的包裹应该是邻居
生成程序包
如果您已经安装了setuptools
,那么可以运行以下命令来生成dist文件夹
python3 setup.py sdist bdist_wheel
发布到PyPI
此命令将需要您的PyPI帐户的用户名和密码
python3 -m twine upload dist/*