从 pypi 安装 Pip 有效,但从 testpypi 失败(找不到要求)

Posted

技术标签:

【中文标题】从 pypi 安装 Pip 有效,但从 testpypi 失败(找不到要求)【英文标题】:Pip install from pypi works, but from testpypi fails (cannot find requirements) 【发布时间】:2016-04-03 13:16:33 【问题描述】:

我正在尝试创建我的第一个 python 包。为了不搞砸整个交易,我一直在尝试将其上传到 testpypi 服务器。这似乎很好(sdist 创建和上传没有显示任何错误)。但是,当我尝试从 https://testpypi.python.org/pypi 将其安装到新的 virtualenv 时,它会抱怨我的安装要求,例如:

pip install -i https://testpypi.python.org/pypi poirot
Collecting poirot
  Downloading https://testpypi.python.org/packages/source/p/poirot/poirot-0.0.15.tar.gz
Collecting tqdm==3.4.0 (from poirot)
  Could not find a version that satisfies the requirement tqdm==3.4.0 (from poirot) (from versions: )
No matching distribution found for tqdm==3.4.0 (from poirot) 

tqdm 和 Jinja2 是我唯一的要求。我尝试指定版本,而不是指定——每种方式都出错。

它似乎试图在 testpypi 服务器上找到 tqdm 和 Jinja2 并且没有找到它们(因为它们仅在常规 pypi 中可用)。将包上传到非测试服务器并运行 pip install 工作。

我需要在 setup.py 文件(如下)中添加什么才能让它在上传到 testpypi 时找到需求?

谢谢!

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup

setup(name='poirot',
      version='0.0.15',
      description="Search a git repository's revision history for text patterns.",
      url='https://github.com/dcgov/poirot',
      license='https://raw.githubusercontent.com/DCgov/poirot/master/LICENSE.md',
      packages=['poirot'],
      install_requires=['tqdm==3.4.0', 'Jinja2==2.8'],
      test_suite='nose.collector',
      tests_require=['nose-progressive'],
      classifiers=[
        'Environment :: Console',
        'Intended Audience :: Developers',
        'Programming Language :: Python',
        'Programming Language :: Python :: 2.7',
        'Programming Language :: Python :: 3.3',
        'Programming Language :: Python :: 3.4',
        'Programming Language :: Python :: 3.5'
      ],
      include_package_data=True,
      scripts=['bin/big-grey-cells', 'bin/little-grey-cells'],
      zip_safe=False)

【问题讨论】:

我遇到了同样的问题。你能添加pip install --verbose --index-url https://testpypi.python.org/pypi/ poirot的输出吗? 【参考方案1】:

更新

PyPI 已升级其网站。根据docs,新的建议是:

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple poirot

--index-url 指向您在 TestPyPI 上的包。 --extra-index-url 指向对 PyPI 的依赖。 poirot 是你的包裹。

过时

试试pip install --extra-index-url https://testpypi.python.org/pypi poirot

另见参考post。

【讨论】:

晚年的->改用https://test.pypi.org/simple/ 我尝试了这个解决方案并遇到了另一个问题。 pypi 上有另一个包,它与我的包同名,命令从 pypi 安装另一个包而不是我的包。是否可以在 testpypi 和 pypi 的依赖项上安装我自己的包?【参考方案2】:

在 2021 年 1 月尝试,已接受答案中的更新对我不起作用。这有效:

pip install -i https://test.pypi.org/pypi/ --extra-index-url https://pypi.org/simple <your_package_in_testpypi>

注意第一个网址是test.pypi.org/pypi,第二个是pypi.org/simple

他们的官方页面应该更新了,它的说明显示:

pip install -i https://test.pypi.org/simple/ <your_package_in_testpypi>

这不起作用。

【讨论】:

以上是关于从 pypi 安装 Pip 有效,但从 testpypi 失败(找不到要求)的主要内容,如果未能解决你的问题,请参考以下文章

通过 pip (PyPI) 安装 Python 实时依赖项 [重复]

pip 无法从本地 pypi (jfrog artifactory) 找到包

pip安装太慢,使用各种镜像源

python pip - 从本地目录安装

即使在名称冲突的情况下,pip 也可以从 PyPi 上的私有索引中选择包?

用于存储 .whl 以进行 pip 安装的目录?