在没有internet的情况下安装python包,并使用源代码.tar.gz和.whl
我们正在尝试在没有internet的情况下安装两个python包在没有internet的情况下安装python包,并使用源代码.tar.gz和.whl,python,pip,openstack,Python,Pip,Openstack,我们正在尝试在没有internet的情况下安装两个python包 For ex : python-keystoneclient 为此,我们从服务器下载了软件包并将其保存在服务器中 但是,在安装tar.gz和.whl软件包时,安装需要首先安装依赖的软件包。由于服务器中没有internet连接,因此服务器将失败 例如:对于python keysteneclient,我们有以下依赖包 stevedore (>=1.5.0) six (>=1.9.0) requests (>=2.5
For ex : python-keystoneclient
为此,我们从服务器下载了软件包并将其保存在服务器中
但是,在安装tar.gz和.whl软件包时,安装需要首先安装依赖的软件包。由于服务器中没有internet连接,因此服务器将失败
例如:对于python keysteneclient,我们有以下依赖包
stevedore (>=1.5.0)
six (>=1.9.0)
requests (>=2.5.2)
PrettyTable (<0.8,>=0.7)
oslo.utils (>=2.0.0)
oslo.serialization (>=1.4.0)
oslo.i18n (>=1.5.0)
oslo.config (>=2.3.0)
netaddr (!=0.7.16,>=0.7.12)
debtcollector (>=0.3.0)
iso8601 (>=0.1.9)
Babel (>=1.3)
argparse
pbr (<2.0,>=1.6)
装卸工(>=1.5.0)
六个(>=1.9.0)
请求(>=2.5.2)
漂亮表(=0.7)
oslo.utils(>=2.0.0)
oslo.serialization(>=1.4.0)
奥斯陆18N(>=1.5.0)
oslo.config(>=2.3.0)
NetAddress(!=0.7.16,>=0.7.12)
债务人催收人(>=0.3.0)
iso8601(>=0.1.9)
巴别塔(>=1.3)
argparse
pbr(=1.6)
当我尝试从上面的列表中逐个安装软件包时,它再次寻找嵌套的依赖项
我们是否可以列出安装python模块(如python KeysonClient)所需的所有依赖包
pipdeptree
是一个命令行实用程序,用于以依赖关系树的形式显示安装在virtualenv中的python包。
只要使用它:
我就是这样处理这个案子的: 在我可以访问Internet的计算机上:
mkdir keystone-deps
pip download python-keystoneclient -d "/home/aviuser/keystone-deps"
tar cvfz keystone-deps.tgz keystone-deps
然后将tar文件移动到无法访问Internet的目标计算机,并执行以下操作:
tar xvfz keystone-deps.tgz
cd keystone-deps
pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index
您可能需要向命令中添加--no dep,如下所示:
pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index --no-deps
我们在工作中也有类似的情况,生产机器无法接入互联网;因此,所有内容都必须脱机和脱离主机进行管理 以下是我尝试过并取得了不同程度的成功:
pypiserver
安装和设置非常简单<代码>devpi需要更多的欺骗。它们都做同样的事情——充当真实pypi的代理/缓存,以及任何自制包的本地pypi服务器。是一个新的,当我看的时候不在,它也有同样的想法。因此,它的工作原理是,您的受internet限制的计算机将连接到这些服务器,然后将它们连接到internet,以便它们可以缓存和代理实际的存储库我们将pypi存储库替换为本地docker映像服务器。如果您想从requirements.txt安装一组依赖项,您可以执行以下操作:
mkdir dependencies
pip download -r requirements.txt -d "./dependencies"
tar cvfz dependencies.tar.gz dependencies
tar zxvf dependencies.tar.gz
cd dependencies
pip install * -f ./ --no-index
并且,一旦您将dependencies.tar.gz传输到没有internet的机器上,您将执行以下操作:
mkdir dependencies
pip download -r requirements.txt -d "./dependencies"
tar cvfz dependencies.tar.gz dependencies
tar zxvf dependencies.tar.gz
cd dependencies
pip install * -f ./ --no-index
这不是答案。我当时很挣扎,但后来意识到我的安装试图连接到internet以下载依赖项 所以,我首先下载并安装了依赖项,然后使用下面的命令安装。它起作用了
python -m pip install filename.tar.gz
您可能会幸运地使用容器进行此操作。这可以通过pip的“下载”选项进行更新。此外,最好能解释一下pip选项“无索引”。你可以从这里得到一个轻量级的pip:@GianlucaD'Ardia——我还下载了一个
pip
wheel,你可以使用它自己和以下工具(trippy)安装它命令:python~/eggs/pip-9.0.1-py2.py3-none-any.whl/pip-install--no index~/eggs/pip-9.0.1-py2.py3-none-any.whl
(将版本细节替换为控制盘的细节)添加一些细节:pip-install--help
指出:(1)-f
或-查找链接
的意思是…如果本地路径或文件://url是一个目录,那么在目录列表中查找存档文件。
,因此它在此处定位此目录中的文件;(2) --无索引
意味着忽略包索引(只查看--改为查找链接URL)。
因此pip install xxx.whl-f./--无索引
意味着:在当前目录中查找安装文件,而不是在远程repo中搜索。如果我的本地计算机使用不同的平台怎么办?这种方法对我很有效,我只是觉得你不需要第二行的引号。Windows上有没有与*对应的?我在Windows工作站上收到一个错误,错误:无效要求:'*'。Windows没有tar,但您可以创建一个zip文件夹。如果不是从命令行,您可以使用典型的右键单击菜单制作一个zip。@DominikNovotný还有另一个答案:对于%x in(dir*.whl)do python-m pip install%x
from。请注意,安装是按字母顺序进行的,一些依赖于尚未安装的库将失败。所以这个解决方案可以改进。或者你需要