使用subprocess调用Python文件时第三方模块导入失败求助
解决subprocess调用Python文件时第三方库找不到的问题
出现No module named 'requests'的核心原因是subprocess调用的Python解释器和你安装第三方库的解释器不是同一个——subprocess会启动全新的Python进程,和主文件里是否导入requests没有关联。
以下是几种可行的解决方法:
使用当前脚本的Python解释器路径
直接通过sys.executable获取主脚本正在使用的Python解释器路径,确保子进程和主进程共用同一个环境:import subprocess import sys subprocess.call([sys.executable, 'exchange.py'])手动指定正确的Python解释器
先定位到安装了requests的Python路径:- Linux/macOS终端执行:
which python3(如果用pip3安装的库) - Windows命令行执行:
where python
把获取到的路径替换到调用命令中,示例:
subprocess.call(['/usr/local/bin/python3', 'exchange.py'])- Linux/macOS终端执行:
检查虚拟环境状态
如果主脚本在虚拟环境中运行,确保虚拟环境处于激活状态,或者直接使用虚拟环境目录下的Python解释器路径(比如venv/bin/python)。验证库的安装位置
分别执行python -m pip list和python3 -m pip list,查看哪个列表里包含requests,对应使用该版本的Python来调用脚本。
内容的提问来源于stack exchange,提问作者Maylon
相关产品推荐
相关产品推荐

