1

更新 10 秒后
现在正确修复,感谢 JF 和 Gauden。

更新
我通过将空闲文件保存在另一个工作文件所在的目录中找到了一个临时修复。(如果可以的话,我仍然想知道如何完全修复它。)

这不是永久修复,因此,如果您想尝试帮助使其在保存文件的任何地方都能正常工作,请随意。

这是一个 python 文件的开始:

#!/usr/bin/python
# -*- coding: utf-8  -*-
import wikipedia
import pagegenerators
import sys
import re
import pywikibot
from pywikibot import *

(您可能已经注意到这是一个 pywikipedia 脚本,但我认为这无关紧要)

该文件从命令行运行良好。

但是,当我尝试使用 IDLE 开发脚本,或者只使用 IDLE 解释器时,我得到一个错误:

>>> import wikipedia

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    import wikipedia
ImportError: No module named wikipedia

我真的不知道为什么它不起作用。

我也试过这个:

>>> imp.find_module("wikipedia.py","f:/ake/pa/th/")

Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    imp.find_module("wikipedia.py","f:/ake/pa/th/")
ImportError: No frozen submodule named f:/ake/pa/th/.wikipedia.py

错误日志中给出的路径是 wikipedia.py 文件的正确路径,.之前就是wikipedia.py.

然后我尝试将路径添加到sys.path,但这也不起作用:

>>> import sys
>>> sys.path.append("c/users/adam/py")
#the same error...

模块路径: `c:\users\joe_bloggs\py\wikipedia.pyc

Python 可执行文件:命令行: C:\Python27\python.exe, IDLE:C:\Python27\pythonw.exe

PYTHONPATH两者都抛出:

Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    print os.environ['PYTHONPATH'].split(os.pathsep)
  File "C:\Python27\lib\os.py", line 423, in __getitem__
    return self.data[key.upper()]
KeyError: 'PYTHONPATH'

操作系统: Windows 7

Python版本: 2.7.2

一个新的 PATH:IDLE 和命令行:

C:\Program Files\Common Files\Microsoft Shared\Windows Live
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live
C://Python27
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin
C:\Program Files (x86)\QuickTime\QTSystem\
C:\Program Files (x86)\Windows Live\Shared
4

2 回答 2

2

编辑上述问题的答案被证明是相当简单的,但我正在编辑这个答案作为可能的故障排除清单以供将来参考,并作为其他可能需要在未来准备此类问题的人的清单。

CLUE 1:您要导入的模块的路径是什么?

>>> import wikipedia
>>> print wikipedia.__file__

这将为您提供编译模块的路径,并且是一条线索。

线索 2:Python 可执行文件的路径是什么?

另见这个问题)。

>>> import sys
>>> print sys.executable

在 shell 和 IDLE 脚本中试试这个。如果这两个结果不同,那么您正在使用两个 Python 解释器,并且其中只有一个具有指向wikipedia模块的路径。

线索3:什么是sys.path

还要在 shell 和 IDLE 中作为脚本重复此操作。

>>> print '\n'.join( sys.path )

(您可以使用sys.path.append("d:/irectory/folder/is/in")将该位置添加到sys.path. 这应该将该目录添加到 Python 查找模块的位置列表中。)

线索 4:什么是 PYTHONPATH,它在两种环境中有何不同?

另见这个答案)。

最后在 shell 和 IDLE 中作为脚本重复此操作。

>>> import os
>>> print '\n'.join( os.environ['PATH'].split(os.pathsep) )

再次注意两个结果(来自 shell 和来自 IDLE),并查看两个环境中的 PYTHONPATH 是否存在差异。

如果所有这些测试都证明没有结果,我会尽可能多地在您的问题中添加这些信息,因为这将有助于为您提供具体的进一步线索。还要添加您正在使用的操作系统以及您获得的任何回溯。

于 2012-05-27T09:23:30.863 回答
0

尝试在我的 Raspberry Pi 上导入新安装的库时,我遇到了同样的问题。我按照所有说明安装库(Adafruit RHT Sensor),它在终端上运行良好。但是,我无法让它在 IDLE 中工作。

事实证明,问题在于 Raspberry Pi 同时安装了 Python 2 和 3。我完成的安装(使用“python”命令)仅适用于 Python 2。我必须使用“python3”命令执行另一次安装才能为 Python 3 安装它。之后,我重新启动了 IDLE,一切正常。

上面打印 sys 可执行路径的建议有助于指出差异:

import sys
print sys.executable
于 2016-08-21T15:03:07.577 回答