从python内部调用python脚本

从python内部调用python脚本,python,subprocess,pip,virtualenv,Python,Subprocess,Pip,Virtualenv,我花了很长时间才找到这个解决方案,所以我希望其他人能够看到它 我想编写一个python脚本来创建虚拟环境并在其中安装模块。不幸的是,pip不能很好地处理子流程,如下所述: 我的答案已经在这个线程上了,但我想在下面详细介绍一下。基本上,问题是pip仍然在使用原始python调用的python可执行文件。要解决这个问题,您需要从传入的环境变量中删除它。以下是解决方案: #!/usr/bin/python3 import os import subprocess python_env_var =

我花了很长时间才找到这个解决方案,所以我希望其他人能够看到它

我想编写一个python脚本来创建虚拟环境并在其中安装模块。不幸的是,pip不能很好地处理子流程,如下所述:


我的答案已经在这个线程上了,但我想在下面详细介绍一下。基本上,问题是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)
使用Python3在Mac、ubuntu 14.04和Windows上测试

同样的问题在很多情况下都很容易出现——从现在起,我将删除这个变量,以防止在处理virtualenv时出现这种行为