在没有 Internet 的情况下安装 python 包,并使用源代码. tar.gz 和. whl

我们正在尝试安装几个没有互联网的 Python 软件包。

For ex : python-keystoneclient

为此,我们从 https://pypi.python.org/pypi/python-keystoneclient/1.7.1下载了软件包,并将其保存在服务器中。

但是,在安装 tar.gz 和。这个安装程序正在寻找要首先安装的依赖程序包。由于服务器中没有互联网连接,所以它正在失败。

对于 ex: 对于 python-keystoneclient,我们有以下依赖包

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)

当我尝试从上面的列表中一个接一个地安装软件包时,它再次寻找嵌套的依赖项。

有没有什么方法可以列出 全部安装 python 模块的依赖包,比如 python-keystoneclient。

184914 次浏览

pipdeptree是一个命令行实用程序,用于以依赖关系树的形式显示安装在 Virtual alenv 中的 python 包。 只要使用它: Https://github.com/naiquevin/pipdeptree

我就是这么处理这个案子的:

在我可以上网的机器上:

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-deps,如下所示:

pip install python_keystoneclient-2.3.1-py2.py3-none-any.whl -f ./ --no-index --no-deps

我们在工作中也有类似的情况,生产机器无法访问因特网; 因此所有东西都必须在离线和离主机的情况下进行管理。

以下是我尝试过的各种方法,但都取得了不同程度的成功:

  1. basket 这是一个小工具,你运行在你的互联网连接的主机上。它不会尝试安装软件包,而是下载软件包,以及安装到目录中所需的其他所有内容。然后将此目录移到目标计算机上。优点: 非常容易和简单的使用,没有服务器头痛; 没有端口配置。缺点: 没有任何真正的 showstop,但最大的缺点是它不尊重你可能拥有的任何版本固定; 它总是会下载软件包的最新版本。

  2. 运行一个本地的 Pypi 服务器。使用 pypiserverdevpipypiserver的安装和设置非常简单; devpi需要更多的技巧。它们都做同样的事情——充当真正的 pypi 的代理/缓存,以及任何自己开发的包的本地 pypi 服务器。localshop是一个新的,在我看来是不存在的,它也有同样的想法。所以它是如何工作的是你的互联网受限的机器将连接到这些服务器,然后他们连接到互联网,以便他们可以缓存和代理的实际存储库。

第二种方法的问题在于,尽管可以获得最大的兼容性,并且可以访问 Python 包的整个存储库,但是仍然需要确保在目标机器上安装任何/所有的依赖项(例如,任何数据库驱动程序的头文件和构建工具链)。此外,这些解决方案不适用于非 pypi 存储库(例如,托管在 github 上的包)。

第二个选择我们已经做得很好了,所以我一定会推荐它。

最终,厌倦了必须处理兼容性问题和库,我们将整个服务器马戏团迁移到商业支持的码头容器。

这意味着我们发布了所有预先配置的东西,实际上没有什么需要安装在生产机器上,这对我们来说是最头痛的解决方案。

我们用一个本地 Docker 映像服务器替换了 Pypi 存储库。

如果您想要安装一系列依赖项,比如,一个 requments.txt,您可以这样做:

mkdir dependencies
pip download -r requirements.txt -d "./dependencies"
tar cvfz dependencies.tar.gz dependencies

并且,一旦你将 depencies.tar.gz 传输到没有互联网的机器上,你会做:

tar zxvf dependencies.tar.gz
cd dependencies
pip install * -f ./ --no-index

这不是答案。我一直在努力,但后来意识到我的安装是试图连接到互联网下载依赖。

因此,我首先下载并安装了依赖项,然后使用以下命令进行安装

python -m pip install filename.tar.gz

您可以从 PyPI 手动下载“ whl”文件: Https://pypi.org/project/google-cloud-debugger-client/#files

然后找到它在根文件夹,你可以只是安装它通过 pip:

pip install google_cloud_debugger_client-1.2.1-py2.py3-none-any.whl

这也是加起来的答案 普拉芬雅拉甘杜拉。作为下载的特定版本的蟒蛇和特定的平台没有详细的回答。

pip3 download notebook --platform manylinux1_x86_64 --only-binary=:all: -d "/Users/ajaytomgeorge/Dev/wheels/"

还有一些高级参数可以通过 论据清单传递

例子

--progress-bar
--no-build-isolation
--use-pep517
--check-build-dependencies
--ignore-requires-python
-d
--platform
--python-version.
--implementations

Mac/linux

pip download \
--only-binary=:all: \
--platform macosx-10_10_x86_64 \
--python-version 27 \
--implementation cp \
SomePackage

窗户

  pip download ^
--only-binary=:all: ^
--platform macosx-10_10_x86_64 ^
--python-version 27 ^
--implementation cp ^
SomePackage