python - 导入使用原始文件,但不在 IDLE 中

标签 python import python-idle pywikibot

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

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

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

这是 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

新路径: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

最佳答案

编辑 事实证明,上述问题的答案相当简单,但我正在编辑此答案,作为可能的故障排除 list 以供将来引用,并作为其他可能需要准备问题的人的 list 将来也会有这种性质。

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

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

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

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

(See also this question)。

>>> 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?它在两个环境中有何不同?

(See also this answer)。

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

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

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

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

关于python - 导入使用原始文件,但不在 IDLE 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772847/

相关文章:

android - 将 Android 项目导入 Android Studio - Gradle 项目同步失败

mysql 表导入向导无法导入 csv 文件

python - 无法使用 pyenv 安装 : `Python may not be configured for Tk` `ModuleNotFoundError: No module named _tkinter' 运行 IDLE

ide - Python-IDLE 编辑器语法着色有时会停止工作

python - 将txt表转换为二维列表

python - 训练gensim word2vec模型后单词不在词汇表中,为什么?

java - Eclipse : File ->Import->Existing Projects into Workspace 无响应

python - 日期时间将语言从英语更改为乌克兰语 python?

python - 从 python 中的目录读取文件并对它们进行排序

python - 使用 Python 将 JSON 转换为 CSV(空闲)