首先,我们可以创建一个 Python 工具包,比如叫做 mypackage,它包含一个模块 mymodule 和一个函数 hello,用于输出 Hello, world!。目录结构如下:
Copy
mypackage/
mymodule.py
init.py
setup.py
其中,init.py 是一个空文件,用于告诉 Python,mypackage 是一个 Python 包。
mymodule.py 文件中包含一个函数 hello,实现如下:
python
Copy
def hello():
print('Hello, world!')
然后,我们需要创建一个 setup.py 文件,用于指定打包和发布工具包的相关信息。setup.py 文件的内容如下:
python
Copy
from setuptools import setup
setup(
name='mypackage',
version='0.1',
description='A demo Python package',
author='Your Name',
author_email='your_email@example.com',
url='https://github.com/your_username/mypackage',
packages=['mypackage'],
install_requires=[],
entry_points={
'console_scripts': [
'hello = mypackage.mymodule:hello'
]
}
)
在上面的 setup.py 文件中,我们指定了以下信息:
name: 工具包的名称,将会作为 pip 安装时的包名称。
version: 工具包的版本号。
description: 工具包的简短描述。
author: 工具包的作者。
author_email: 工具包作者的邮箱地址。
url: 工具包的主页 URL。
packages: 工具包包含的 Python 包列表,这里只有 mypackage。
install_requires: 工具包依赖的其他 Python 包列表,这里为空。
entry_points: 工具包的入口点,这里指定了一个命令行脚本 hello,它将调用 mypackage.mymodule.hello 函数。
然后,我们可以使用以下命令将 mypackage 打包为一个源码发布文件:
Copy
- python setup.py sdist
打包完成后,我们可以使用以下命令将工具包发布到 PyPI 上:
- pip install wine
Copy
- twine upload dist/*
完成发布后,其他人可以通过以下命令安装 mypackage 并调用 hello 函数:
Copy
pip install mypackage
hello
上述示例中,我们使用了 setuptools 和 twine 工具来打包和发布工具包。如果您还不熟悉这些工具,可以先阅读相关文档了解更多信息。
WARNING Error during upload. Retry with the --verbose option for more details.
ERROR 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
这个错误提示表明在上传工具包到 PyPI 时,认证信息无效或者不存在。这通常是由于未正确配置 ~/.pypirc 文件或者未正确输入用户名和密码等认证信息导致的。
您可以按照以下步骤检查和修复此问题:
检查您的 ~/.pypirc 文件是否包含正确的认证信息。该文件应该包含如下所示的内容,其中 username 和 password 是您在 PyPI 上注册的用户名和密码:
Copy
[distutils]
index-servers =
pypi
[pypi]
repository: https://upload.pypi.org/legacy/
username:
password:
如果您没有 ~/.pypirc 文件,可以手动创建该文件并添加上述内容。请注意替换 和 为您在 PyPI 上的用户名和密码。
确保您在上传工具包时输入了正确的用户名和密码。如果您使用 twine 工具上传工具包,可以使用 --username 和 --password 选项指定用户名和密码,例如:
Copy
twine upload --username --password dist/*
如果您使用 setup.py 脚本上传工具包,可以使用 -r 选项指定要上传到的 PyPI 仓库,例如:
Copy
python setup.py sdist upload -r pypi
在上传工具包时,setup.py 脚本将会提示您输入用户名和密码。
如果上述步骤都无法解决问题,请检查您的用户名和密码是否正确,或者联系 PyPI 支持团队获取更多帮助。