【问题标题】:Published by twine python package does not appear in repository由 twine 发布的 python 包未出现在存储库中
【发布时间】:2022-01-26 08:02:04
【问题描述】:

我正在尝试将我的 python 包发布到私有存储库。我遵循了官方指南https://packaging.python.org/en/latest/tutorials/packaging-projects/,一切似乎都很好。这是终端输出:

(venv) C:\Users\xxx\PycharmProjects\my_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 带有破折号。可能是这个问题吗? 如何找出问题所在?

【问题讨论】:

  • 只是我个人使用 PIP 的经验。您的包裹可能需要一些时间才能公开显示。在我的情况下,超过 24 小时。 --repository testpypi dist/* 也值得一试。这是一个测试存储库,它应该看起来更快。
  • 可能你的私有仓库配置不正确?
  • 你能不能试试http://xxx/pypi/ 而不是http://xxx/pypi/simple。也可以试试python3 -m twine upload --repository-url &lt;URL&gt; --username &lt;USERNAME&gt; --password &lt;PASSWORD&gt; dist/*
  • 为了能够帮助您,需要有关您的设置配置的更多信息。你能发布你的setup.py/setup.cfg的内容吗?您使用了哪些命令来构建 sdist tarball 和轮子?
  • 您也可以在您的包上运行twine check dist/*check-wheel-contents dist/*.whl 以查看是否报告了任何错误。

标签: python pypi twine


【解决方案1】:

当然,您的包上传到私人或公共存储库并不重要。你甚至可以不上传到 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 帐户的用户名和密码

twine upload dist/*

【讨论】:

  • 感谢您的全面指导。但答案不包含对问题的回应:如何找出问题所在。
  • 要准确回答这个问题,我需要查看您的项目文件,但您没有提供任何文件。所以我给了你一个常见的答案。
猜你喜欢
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2018-02-01
  • 2016-03-04
  • 1970-01-01
  • 2012-03-20
  • 1970-01-01
相关资源
最近更新 更多