2015-11-06 375 views
0

我需要建立一個實驗室環境中,觀衆可能不一定在會場有互聯網連接安裝VIRTUALENV。我只需向觀衆解釋一些軟件包。沒有互聯網連接

我試圖使用的virtualenv做這一切。所以使用pip install我已經成功地安裝了virtualenv。在此之後,我激活了我的虛擬環境。然後在那裏我再次使用pip install來安裝其他需要的模塊,如請求等。

現在,由於我的受衆在培訓期間可能沒有互聯網連接,我希望能夠將他們的virtualenv分發給他們,以便他們有一個完整的工作環境,他們可以開始使用培訓的主要內容。

我不知道怎麼我的virtualenv分發給其他人。據我瞭解,我可以做

PIP凍結> requirements.txt

然後

PIP安裝-r requirements.txt

但後者上面的內容也需要在虛擬環境中完成。如果我錯了,請糾正我。

於是,我試着寫一個Python腳本,將自動完成所有的這些東西,給互聯網連接問題,在我的自動化腳本我不能使用PIP install來安裝的virtualenv。因此我使用setup.py來安裝virtualenv。

下面是我的腳本嘗試(不工作)

import os 
import shutil 
import sys 
from os.path import expanduser 
from os.path import join 

home = expanduser("~") 
newpath = join(home,"newFolder") 
print newpath 
if not os.path.exists(newpath): 
    os.makedirs(newpath) 

cwd = os.path.dirname(os.path.abspath(__file__)) 
print cwd 
#virtenv = join(cwd,'virtualenv-13.1.2') 
#print virtenv 
setupFile = join(cwd,'setup.py') 
string = sys.executable + " " + setupFile + " install" 
print string 
os.system(string) 
# isntalling dependencies 
string = "pip install -r requirements.txt" 
os.system(string) 

的想法是 - 當用戶運行上面的腳本(沒有任何互聯網),應該有一個virtualenv中的設置他的主目錄下的新文件夾。然後在該虛擬環境中,該腳本應該運行pip install -r requirements.txt來安裝所有必需的模塊。

到目前爲止,上面的腳本沒有做什麼需要。我已經將上述腳本放在與virtualenv安裝文件相同的目錄中。

上午我甚至在想直?我怎樣才能做到這一點?

回答

0

我很確定你想要做的是通過在你的計算機上運行一個Web服務器來建立你自己的簡單的存儲庫,然後把你的服務器作爲一個存儲庫添加到參加你的人事件 - 允許他們訪問使用如下命令在本地網絡上你的資料庫:

pip install --extra-index-url https://IP_ADDRESS_OF_YOUR_SERVER/ yourappname

This page對如何設置,所有一個不錯的指南。

+0

是的,這是正確的。但是除了上述以外,還有其他的方法嗎......有點在我試圖進行的方向上? – qre0ct

+1

是的,設置你的本地存儲庫,使其包含你需要的所有包,包括virtualenv和'pip freeze> requirements.txt'的輸出。然後用'pip install --extra-index-url https:// YOUR_SERVER /'爲你的項目的virtualenv和需求創建一個shell腳本。在shell腳本中運行(相對)簡單的命令幾乎總是比在過於複雜的python腳本中運行(相對)簡單的命令更容易,但是您還可以將指定簡單存儲庫位置的標誌附加到python腳本中的命令中。 –

+0

另一個問題是,我上面的方法有什麼問題?無法使用setup.py來代替pip來安裝virtualenv? – qre0ct