我在这样的结构中有一个virtualenv:
VENV / SRC / project_files
我想在project_files中运行一个makefile(调用Python),但我想从虚拟环境运行它。由于我的部署编排的工作方式,我不能简单地做一个源venv / bin / activate。
相反,我试过export PYTHONPATH={project_path}/venv/bin/python2.7
。但是,当我尝试运行makefile时,python脚本没有找到virtualenv中安装的依赖项。我错过了一些明显的东西吗
答案 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
二进制文件。不要在这里使用它。