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

pip cannot find package from local pypi (jfrog artifactory)

我们有一个本地 pypi,我们在其中放置了一些 python 包。但是,pip 无法安装该软件包。

pip搜索会找到包:

$ pip search --index=http://artifactory.ours.com/api/pypi/pypi-local/simple hello        
hello     - UNKNOWN

但是 pip install 给出了以下内容:

pip install --pre -r requirements.txt --trusted-host=artifactory.ours.com

Collecting hello (from -r requirements.txt (line 4)) Could not find a version that satisfies the requirement hello (from -r requirements.txt (line 4)) (from versions: ) No matching distribution found for hello (from -r requirements.txt (line 4))

这里是 requirements.txt:

# requirements.txt
--allow-all-external
--extra-index-url http://artifactory.ours.com/artifactory/api/pypi/pypi-local/simple

hello

我认为问题在于您的软件包没有版本号。您的 setup.py 未指定版本。

来自 Python 文档的示例(该示例用于 distutils):

https://docs.python.org/2/distutils/setupscript.html

所以如果我使用像 1.x 这样的旧版本的 pip,问题似乎就解决了。不确定这是 jfrog 错误还是与 pip 本身有关。

导致此问题的另一个可能原因是当您在将包上传到 artifactory 时在包名称中使用连字符 (-)。 pip 可以成功搜索并找到您的包,但无法安装它。用下划线替换连字符。