ImportError:从其他Python脚本调用时,没有名为xmltodict的模块

ImportError:从其他Python脚本调用时,没有名为xmltodict的模块,python,Python,我有一个奇怪的问题 我使用的是Py2.7,我正在从python脚本调用py文件。下面是我的代码 caller.py import os import subprocess filename = 'file.py' data = 'aXD' output = subprocess.check_output(['python', filename,data], shell=False) import sys import os import xmltodict args = sys.a

我有一个奇怪的问题

我使用的是Py2.7,我正在从python脚本调用py文件。下面是我的代码

caller.py

import os
import subprocess    
filename = 'file.py'

data = 'aXD'
output = subprocess.check_output(['python', filename,data], shell=False)
import sys
import os
import xmltodict

args = sys.argv
xml = args[1].strip('\n')
xml = xml.strip()
pid = str(os.getpid())
result = {'msg':'ok',"pid":pid}
print(result)
file.py

import os
import subprocess    
filename = 'file.py'

data = 'aXD'
output = subprocess.check_output(['python', filename,data], shell=False)
import sys
import os
import xmltodict

args = sys.argv
xml = args[1].strip('\n')
xml = xml.strip()
pid = str(os.getpid())
result = {'msg':'ok',"pid":pid}
print(result)
它给出了一个错误:

    import xmltodict
ImportError: No module named xmltodict
Traceback (most recent call last):
模块就在那里,因为文件在单独执行时运行良好。

将“当前目录”添加到Python路径中,这样它就会在主程序旁边的目录中找到模块

import sys
sys.path.append('.')

作为回答,问题不是在注释->中,而是您安装了多个python解释器,并且通过
子流程启动它时得到的解释器与您预期的不同。请检查输出。您应该通过如下方式更改调用来解决此问题:

output = subprocess.check_output([sys.executable, filename,data], shell=False)

这将至少确保两个脚本由同一个解释器运行。

这个问题可以通过以下简单的方式解决: 使用'pip'-python包管理器
$sudo pip安装xmltodict


这应该安装缺少的模块,并且您不应该对此模块有任何问题。

使用conda安装此xmltodict软件包,您需要运行以下操作之一:

conda安装-c conda forge xmltodict conda安装-c conda forge/label/gcc7 xmltodict
conda安装-c conda forge/label/cf201901 xmltodict


安装包xmltodict后,重新运行脚本。它会起作用。

它表明您有路径/包含问题。您是否安装了多个python解释器?试着在每个文件中打印
sys.executable
,看看它会返回什么?在哪里?听起来
caller.py
的工作目录与运行
file.py
@g.d.d.c时的工作目录不同,我有Python2.7和2.6,但它们都执行相同的Python。只是checked@g.d.d.c事实上,您是对的,它返回两条路径:1)/usr/local/cillar/python/2.7.6/Frameworks/python.framework/Versions/2.7/Resources/python.app/Contents/MacOS/python 2)/usr/bin/python这仅在与解释器在当前脚本路径中没有找到模块有关的情况下才能解决问题。事实并非如此,这并不能解决他的问题。他需要解释多个口译员的存在。