繁体   English   中英

在没有互联网访问权限的 rhel 6 上的虚拟 python 环境(virtualenv 或 pyvenv)中安装 rpm 包

[英]installing rpm packages inside of a virtual python environment (virtualenv or pyvenv) on rhel 6 with no internet access

我的 RHEL 服务器只能访问我的 IT 预先批准的软件包。 我正在开发一个将托管在此服务器上的 Python 应用程序。 现在,我已经设法在不同的位置 (/usr/local/bin) 构建了最新版本的 python。 我能够创建虚拟环境以将其与系统的其余部分隔离。

现在,我需要在环境中使用 pip 安装软件包以使应用程序正常工作,例如。 姜戈。 由于 IT 已禁用对 Internet 的所有访问,因此我无法执行 pip install package_name。 好吧,我可以,但它尝试从 Internet 下载软件包并超时。 当我下载django包的rpm并尝试在虚拟环境中安装时,失败:

(envtest) [root@arlwebimgakp02 envtest]# rpm -ivh python3-django-1.7.2-1.fc22.noarch.rpm
error: Failed dependencies:
        /usr/bin/python3 is needed by python3-django-1.7.2-1.fc22.noarch
        python(abi) = 3.4 is needed by python3-django-1.7.2-1.fc22.noarch
        python-django-bash-completion = 1.7.2-1.fc22 is needed by python3-django-1.7.2-1.fc22.noarch
        python3 is needed by python3-django-1.7.2-1.fc22.noarch

所以看起来 rpm 安装正在寻找 python (2.6.6) 的通用安装的依赖项,而不是在虚拟环境中使用的单独编译的 3.4.3。 我什至可以这样做吗? 我可以将 rpm 包安装到虚拟环境中吗? 在没有互联网访问服务器的情况下,我还能如何让我的 python 包安装在我的虚拟环境中?

RPM 是系统级别的包管理器。 它将检查其内部数据库的依赖关系。 不检查可执行文件python是否存在,而是检查包python 是否存在。

你需要下载Django-1.8.tar.gz,复制到linux机器上

pip install Django-1.8.tar.gz

您需要说服您的 IT 部门,python 包是一个好东西,就像 rpms 一样。 然后,您可以通过直接从 pypi.python.org 下载或使用 pip 来构建所需包的目录,例如:

pip install --download=/path/to/pypi/repo django

然后,在你的 virtualenv 你做

pip install --no-index --find-links=/path/to/pypi/repo django

由于您的 IT 部门乐于助人和开明,您甚至可以说服他们安装 pypi 缓存,例如devpi ,以便更轻松地向您的许多同事部署。

首先,您不能在 virtualenv 中安装 RPM。 virtualenv 仅影响pip安装的 Python 包。

您可以做的是使用另一台可以访问互联网的计算机来下载您想要的 Python 包并将它们上传到服务器进行安装。 您可以指定包适用的 Python 版本,甚至可以使用需求文件(如果有)。 例如,如果您想为 Python 3.5 安装最新版本的 Django,您可以执行以下操作:

# On your machine with internet access
pip download --python-version "3.5" --only-binary=:all: Django

这将下载一系列.whl文件。 将所有这些上传到您的服务器,然后在服务器上的 virtualenv 中运行此命令:

pip install *.whl

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM