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

时间:2014-05-28 18:25:40

标签: 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)

file.py

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):

模块是正确的,因为文件在单独执行时运行完美。

5 个答案:

答案 0 :(得分:5)

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

这应该安装缺少的模块,你不应该对这个模块有问题。

答案 1 :(得分:1)

添加"当前目录"到你的Python路径,所以它将在主程序旁边的目录中找到模块

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

答案 2 :(得分:1)

作为答案,而不是在评论中 - >问题是你已经安装了多个python解释器,并且你得到的是一个不同于你通过subprocess.check_output启动它时的预期。您应该通过更改调用来解决这个问题:

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

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

答案 3 :(得分:0)

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

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

一旦安装了xmltodict软件包,请重新运行脚本。它将起作用。

答案 4 :(得分:-1)

类似于Tsanko的答案,适用于Mac或Linux,对于Windows,它几乎是相同的命令,只是不需要sudo。

pip install xmltodict

在Windows计算机上遇到同样的问题后,这种改编对我有用。