2017-07-03 68 views
3

我需要在我的产品中包含几个python软件包,但构建的jenkins服务器无法访问Internet。我使用pip下载下载了一个软件包,下载了软件包及其所有依赖项。但是,我需要确保pip知道在哪里找到这些依赖关系。我正在尝试使用选项--no-index和--find-links以及带有指向这些软件包链接的html文件的路径。完整的命令如下:pip安装 - 查找链接html文件格式

pip install http://SERVER/python-packages/impyla/0.14.0/impyla-0.14.0.tar.gz --no-index --trusted-host SERVER --find-links http://SERVER/python-packages/impyla/0.14.0/packages.html 

...和的packages.html文件看起来像这样:

<a href="http://SERVER/python-packages/impyla/0.14.0/bitarray-0.8.1.tar.gz">bitarray-0.8.1.tar.gz</a> 
 
<a href="http://SERVER/python-packages/impyla/0.14.0/ply-3.10.tar.gz">ply-3.10.tar.gz</a> 
 
<a href="http://SERVER/python-packages/impyla/0.14.0/six-1.10.0-py2.py3-none-any.whl">six-1.10.0-py2.py3-none-any.whl</a> 
 
<a href="http://SERVER/python-packages/impyla/0.14.0/thriftpy-0.3.9.tar.gz">thriftpy-0.3.9.tar.gz</a>

然而,当詹金斯尝试运行这些命令,我得到:

未能找到满足要求的版本 thriftpy> = 0.3.5(从impyla == 0.14.0)(从版本:)

没有匹配的分布发现thriftpy> = 0.3.5(从 impyla == 0.14.0)

我想知道我的packages.html是不是在一个正确的格式,但我找不到任何使用HTML文件的依赖关系解决的例子。有没有人使用过 - 查找链接成功?

+1

你可以用'-vvv'来粘贴你的pip命令的输出吗? – emulbreh

+0

我加了-v,它给了我答案! 跳过页面http://SERVER/python-packages/impyla/0.14.0/packages.html,因为Content-Type:text/plain; charset = utf-8 我正在提供html文件的回购并未正确设置Content-Type。谢谢你的建议! –

回答

0

我从来没有见过HTML格式的需求文件,但也许是可能的,官方文档中的例子是.txt文件,但我认为你的麻烦是另一回事,例如,你必须检查以下操作系统的架构做了包的下载,因为这个包绑定到那个架构,我的意思是64位或32位,另一件事是检查你是否有相同的Python解释器或另一个与你下载软件包的兼容,所有这些都是重要的,即使对于你保留thriftpy版本并不重要,也不要指定该软件包的版本并将其从需求文件中删除,并让该pip找到为你工作的市长版本,如果你不这样做会发生什么指定一个包的版本。

+0

根据查找链接的pip文档: 如果一个url或路径到一个html文件,然后解析链接到档案。如果一个本地路径或文件:// url是一个目录,然后在目录列表中查找存档。 我并不担心体系结构 - 我用来下载软件包的机器是产品将要部署的相同类型的机器。谢谢! –