2016-09-19 35 views
0

我們有一個應用程序,它使用virtualenv在python虛擬環境設置中執行一些Python工作。python虛擬環境和特定系統庫之間的關係是什麼?

我們遇到了系統庫的版本與虛擬環境中安裝的版本不匹配的問題。這就是我們已經將NetCDF4安裝到虛擬環境中,並且以前通過yum安裝了libnetcdf.so.7。 python包似乎取決於有libnetcdf.so.7可用。

由於系統更新libnetcdf.so.7不再存在並已被libnetcdf.so.11替換。

所以問題是這樣的:設置虛擬環境檢測系統庫版本還是有其他一些機制?我們是否也需要重新構建環境來解決這個問題,或者還有其他選擇嗎?

回答

0

當您使用virtualenv創建虛擬環境時,您可以選擇是否將標準網站包作爲環境的一部分。由於這是現在的默認行爲(雖然可以通過在命令行中使用--no-site-packages來聲明),但您可能正在使用不堅持這一點的舊版本的virtualenv。

在這種情況下,您應該能夠相當容易地重新創建環境。首先,捕捉到現有環境當前已安裝的軟件包與條命令

pip freeze > /tmp/requirements.txt 

然後刪除虛擬環境,並用下面的命令重新創建:

virtualenv --no-site-packages envname 
source envname/bin/activate 
pip install -r /tmp/requirements.txt 

但是沒有這解決了沒有安裝所需支持庫的棘手問題。您可以嘗試從舊圖書館的位置創建一個到新圖書館的符號鏈接 - 可能NetCDF4可以與多個版本的libnetCDF一起使用,並且只是被嚴格配置爲使用特定版本。如果不是,那麼解決這個問題可能會變得漫長而痛苦。

相關問題