如何在python中使用virtualenv和pip

时间:2017-06-30 16:26:33

标签: python pip virtualenv

我希望有一个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)。感谢。

1 个答案:

答案 0 :(得分:0)

对于记录,问题在于虚拟环境激活(要执行的行activate_this.py)。对于Python 3,以下内容对我有用:

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