从python内部调用python脚本

2024-04-20 07:42:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想编写一个python脚本来创建一个虚拟env并在其中安装模块。不幸的是,pip不能很好地处理子进程,如下所述: https://github.com/pypa/pip/issues/610

我的答案已经在那条线上了,但我想在下面详细说明


Tags: 模块pip答案httpsgithubenv脚本com
1条回答
网友
1楼 · 发布于 2024-04-20 07:42:17

基本上,问题是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、Ubuntu14.04和Windows上用Python3进行了测试

同样的问题很容易在很多情况下存在,我将从现在开始删除这个变量,以防止在处理virtualenv时发生这种行为

相关问题 更多 >