在Python中调用Python脚本

3

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

我想编写一个Python脚本来创建虚拟环境并在其中安装模块。不幸的是,pip与子进程不兼容,详见此处: https://github.com/pypa/pip/issues/610

我的答案已经在那个主题中了,但我想在下面详细说明。

1个回答

3

基本上,问题就是pip仍在使用最初调用的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时出现这种行为,我将从现在开始删除此变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接