从python内部调用python脚本

我花了永远的时间找到这个解决方案,所以我希望其他人也能看到它.

我想编写一个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时出现这种行为

上一篇:修改大型cython项目的工作流


下一篇:JAVA设计模式-装饰设计模式-继承体系的由来和装饰类的优化