从python内部调用python脚本
我花了很长时间才找到这个解决方案,所以我希望其他人能够看到它 我想编写一个python脚本来创建虚拟环境并在其中安装模块。不幸的是,pip不能很好地处理子流程,如下所述:从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 =
我的答案已经在这个线程上了,但我想在下面详细介绍一下。基本上,问题是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时出现这种行为