簡體   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