2013-07-11 35 views
0

我使用了很多python軟件包,比如numpy,bottleneck,h5py,...用於我的計算機上的日常工作。由於我是在這臺機器上安裝的,因此安裝這些軟件包是沒有問題的。不過,我想在我只有普通用戶帳戶的服務器上使用我的「環境」。所以我想在我的機器上安裝所有需要的軟件包來創建一個虛擬環境(使用virtualenv)。然後我只是將整個文件夾複製到服務器,並可以運行它的一切?端口的Python virtualenv到另一個系統

我的機器使用Fedora 19,而服務器使用Ubuntu。這是一個問題嗎?我找不到有關如何將這樣的虛擬環境移動到其他系統的任何信息。我想首先在我的機器上創建虛擬環境的原因是服務器上缺少很多工具,比如python-dev,所以我不能編譯numpy。

我查看了Anaconda和Enthought Python的發行版,但它們不包含我需要的幾個包。另外,這個問題應該有一個完全「開放」的方式?

將虛擬環境移動到服務器失敗,因爲它導入包時抱怨一些丟失的文件。這可能並不令人意外......

+1

那裏的答案可能並不是太有用,因爲你不能在目標機器上編譯numpy,但[移動virtualenv實際上是不可能的](http://stackoverflow.com/q/17554093/395760) 。 – delnan

+0

恩,謝謝你提供這個有用的鏈接。我想這是不可能的。 – HyperCube

+0

如果python開發者頭文件丟失,你不能讓他們安裝在系統範圍內(服務器管理員?),你可以做的是編譯你自己的python(它不是*那麼難),然後編譯numpy等。Virualenv允許你指定要使用的python二進制文件。 –

回答

4

你不應該移動你的virtualenv,因爲它基本上與你的系統python鏈接,並且二進制文件在其他機器上不起作用。

但是...您可以導出已安裝軟件包的列表,並通過requirements.txt文件將它們安裝在另一個virtualenv中。

基本上,我通常做我的大部分項目:

# Generate a requirements file: 
pip freeze > requirements.txt 

在新機:

# This uses virtualenvwrapper, but you can do it without as well 
mkproject my_project_name 
git clone git://..../ . 
pip install -r requirements.txt 
+0

謝謝,這對我來說已經非常有用! – HyperCube

1

已經手動編譯VTK和PySide2爲Python36,我也發現自己彎曲virtualenv規則。

就在今天,我將virtualenv轉移到了另一個系統,爲了讓事情變得更容易,我給了它與前一個系統完全相同的路徑。 但是,我在新系統上沒有相同的Python路徑。幸運的是,我可以通過修改位於[VIRTUALENV]/Lib中的'orig-prefix.txt'文件來改變virtualenv的位置。

基部Python路徑中一個的virtualenv需要被存儲在: [VIRTUALENV]/Lib/orig-prefix.txt

如果正確地記得所述的virtualenv本身的路徑被嵌入在多個文件中。因此,在我需要將virtualenv重新定位到不同路徑的情況下,我只是重新創建並複製了除[VIRTUALENV]/Scripts目錄外的所有內容。

這可能不是virtualenv的使用方式,但它確實提供瞭解決方法。另外,請注意,我在Windows環境中執行此操作。

相關問題