使用PYTHONPATH来使用virtualenv

时间:2014-08-05 23:08:43

标签: python

我在这样的结构中有一个virtualenv:

VENV /   SRC /     project_files

我想在project_files中运行一个makefile(调用Python),但我想从虚拟环境运行它。由于我的部署编排的工作方式,我不能简单地做一个源venv / bin / activate。

相反,我试过export PYTHONPATH={project_path}/venv/bin/python2.7。但是,当我尝试运行makefile时,python脚本没有找到virtualenv中安装的依赖项。我错过了一些明显的东西吗

3 个答案:

答案 0 :(得分:0)

PYTHONPATH environmenbt变量不用于选择Python可执行文件的路径 - 选择哪个可执行文件,与所有其他情况一样,取决于shell的PATH环境变量。 PYTHONPATH用于扩充目录的搜索列表(Python中的sys.path),其中Python将查找模块以满足导入。

由于解释器在sys.path之前将某些目录放在PYTHONPATH之前,以确保具有标准名称的替换模块不会影响标准库名称。因此,任何标准库模块都将从与其安装的解释器关联的库中导入(除非您进行一些手动处理,我不建议这样做。)

venv/bin/activate做了许多需要在调用shell的命名空间中处理的东西,如果你找不到一种方法来获取源代码,这会使定制代码变得相当困难。 。

答案 1 :(得分:0)

您实际上可以在虚拟环境中调用Python解释器。因此,在您的Makefile中,不要拨打python,而是拨打venv/bin/python

答案 2 :(得分:0)

要在virtualenv中运行命令,您可以使用vex utility

$ vex venv make

您还可以查看make PYTHON=venv/bin/python是否适合您的情况。

PYTHONPATH调整sys.path列表。它不会更改python二进制文件。不要在这里使用它。