我花了永远的时间找到这个解决方案,所以我希望其他人也能看到它.
我想编写一个Python脚本来创建一个虚拟环境并在其中安装模块.不幸的是,pip不能很好地配合子流程,如下所示:
https://github.com/pypa/pip/issues/610
我的答案已经在该线程上,但是我想在下面详细说明
解决方法:
基本上,问题是pip仍在使用原始python调用的python可执行文件.要解决此问题,您需要从传入的环境变量中将其删除.解决方法如下:
#!/usr/bin/python3
import os
import subprocess
python_env_var = {"_", "__PYVENV_LAUNCHER__"}
CMD_ENVIRONMENT = {name: value for (name, value) in os.environ.items()
if name not in python_env_var}
subprocess.call('./pip install -r requirements.txt', shell=True,
env=CMD_ENVIRONMENT)
在Mac,Ubuntu 14.04和Windows上使用python 3测试
在许多情况下很容易存在相同的问题-从现在开始,我将删除此变量,以防止在处理virtualenv时出现这种行为