我希望有一个python脚本,它在开始时创建一个虚拟环境,安装所需的模块(例如cherrypy),然后继续其余的代码。 到目前为止我发现的内容如下:
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版本(例如python 3.6)。感谢。
答案 0 :(得分:0)
对于记录,问题在于虚拟环境激活(要执行的行activate_this.py
)。对于Python 3,以下内容对我有用:
ACTIVATE_THIS = 'venv/bin/activate_this.py'
exec(Path(ACTIVATE_THIS).read_text(), dict(__file__ = ACTIVATE_THIS))