2013-10-05 285 views
2

我在之前創建的一個虛擬環境(venv1)中安裝了一些python軟件包(使用pip,它會自動下載軟件包及其依賴項),現在我需要創建另一個包含子集的虛擬環境(venv2)安裝在venv1。但是我怎樣才能不使用互聯網?我找出了一些想法,但我不知道他們是可能的:如何在虛擬環境中重新安裝已安裝的python軟件包?

  • 通過複製venv1到venv2和卸載不需要的包
  • 通過從venv1複製在站點包的包目錄venv2
  • 通過從venv1中提取一個一個的包文件,然後創建文件setup.py,根據它填寫並安裝在venv2中(希望不會,因爲它會很繁瑣並且可能會引入錯誤)
  • 也許有一種方法可以生成蛋從已安裝的軟件包或使用任何工具提取它?怎麼樣?

那麼有什麼更好的方法來做到這一點?

感謝

+0

爲什麼選擇投票? – juliocesar

回答

2

如果除了virtualenv您使用virtualenvwrapper(非常推薦),你可以複製與

然後在虛擬環境中,你去與workon venv2新環境,你卸載你不需要的軟件包。

0

我想說複製venv是最簡單的選擇。然而,在這種情況下,創造了第一VENV時,您需要使用--relocatable標誌:

$ virtualenv --help 
... 

--relocatable   Make an EXISTING virtualenv environment relocatable. 
         This fixes up scripts and makes all .pth files 
         relative 

例如:

$ virtualenv --relocatable venv1 
$ venv1/pip/install somepackage 
$ cp venv1 venv2 

然後你就可以在VENV只需使用cp

否則你的venv將不可複製/移動,因爲它包含絕對路徑。

+0

你應該能夠複製'site-packages'下的東西;確保你查看'.pth'文件並相應地更改路徑。 –

+0

使用--relocatable得到了一些問題,所以我找到了https://github.com/fireteam/virtualenv-tools我會測試它 – juliocesar

相關問題