2017-06-30 92 views
0

我想要一個python腳本,它在開始時創建一個虛擬環境,安裝所需的模塊(例如cherrypy),然後繼續執行其餘的代碼。 我發現迄今如下: 如何在python中使用virtualenv和pip

import os, virtualenv 

HOME_DIRECTORY = "venv" 
virtualenv.create_environment(HOME_DIRECTORY) 
execfile(os.path.join(HOME_DIRECTORY, "bin", "activate_this.py")) 

import pip 
pip.main(["install", "--prefix", HOME_DIRECTORY, "cherrypy"]) 

import cherrypy 

class Root(object): 
    @cherrypy.expose 
    def index(self): 
    return "Hello World!" 

if __name__ == '__main__': 
    cherrypy.quickstart(Root(), '/') 

的腳本創建虛擬環境,並安裝CherryPy的(基於日誌),但我仍然得到ImportError: No module named cherrypy錯誤。 我也試過以下,但得到了同樣的錯誤:

import importlib 
CHERRYPY = 'cherrypy' 
try: 
    importlib.import_module(CHERRYPY) 
except ImportError: 
    import pip 
    pip.main(["install", "--prefix", HOME_DIRECTORY, CHERRYPY]) 
finally: 
    globals()[CHERRYPY] = importlib.import_module(CHERRYPY) 

除了上述問題,另外,我想知道如何指定Python版本(如蟒蛇3.6),並創建虛擬環境。謝謝。

+0

當您進入新的venv並嘗試在控制檯中導入模塊時會發生什麼? –

+0

使用python3 -m venv代替virtualenv –

+0

'conda'是管理虛擬環境的更強大的工具。試試。 – lwshang

回答

0

爲了記錄問題是虛擬環境激活(要執行的行activate_this.py)。對於Python 3,以下工作適用於我:

ACTIVATE_THIS = 'venv/bin/activate_this.py' 
exec(Path(ACTIVATE_THIS).read_text(), dict(__file__ = ACTIVATE_THIS))