在Eclipse的PyDev中添加Python模块导致导入错误?

18 投票
11 回答
74220 浏览
提问于 2025-04-16 18:01

我在用Eclipse的PyDev时遇到了一个问题,它无法识别我已经安装的模块。下面是我详细的操作步骤。我的电脑是Mac(Snow Leopard)。

在终端中输入的命令

python --version

显示的是Python 2.6.6

import unidecode

而且

from unidecode import unidecode

都运行得很好!

我在Eclipse中安装了PyDev,然后配置了Python解释器(自动配置)。我选择了所有推荐的包,然后点击了应用确定

但是Eclipse一直在抱怨

Traceback (most recent call last):
  File "/Users/me/Documents/workspace/myproject/python/pythontest.py", line 12, in <module>
    from unidecode import unidecode
ImportError: No module named unidecode

我的Python文件看起来是这样的

#!/usr/bin/env python
# encoding: utf-8


import sys
import os
from unidecode import unidecode


def main():
    print unidecode(u"Ågot Aakra")

if __name__ == '__main__':
    main()

当我把脚本中的第一行去掉时

#!/usr/bin/env python

结果还是出现同样的错误。

有人知道问题出在哪里吗?

11 个回答

2

你可以很简单地把这个模块添加到pydev的路径中。首先,右键点击你的项目,选择项目属性,然后找到PyDev选项,再点击PYTHONPATH,接着选择外部库。根据这个模块是放在源文件夹里还是在zip/egg文件中,选择“添加源文件夹”或者“添加zip/jar/egg”。然后找到site-packages目录,指向相关的文件或文件夹(我的路径是:/usr/local/lib/pythonx.x/site-packages)。

2

我今天遇到了同样的问题。我在用pydev,之前有一个正常工作的项目,里面有好几个子包。突然间,在创建了一个新模块后,我发现无法在另一个包里使用这个模块。更奇怪的是,我可以在同一个子包里使用另一个模块……

最后,我做了以下几件事:

  1. 重启了eclipse
  2. 删除并重新添加了Python解释器和所有的库
  3. 烦恼地抓了抓头

我用下面的脚本删除了所有编译过的类:

import os

def clean_folder(folder):
  for file in os.listdir(folder):
    path = os.path.join(folder,file)
    if os.path.isdir(path):
        clean_folder(path)

    if '.pyc' == file[-4:]:
        print 'deleting: ' + str(path)
        os.remove(path)

if __name__ == '__main__':
  folder = 'YOUR_PROJECT_SRC_PATH'
  clean_folder(folder)

最后我终于可以开始“真正的”工作了 :) 希望这能帮到某些人……

28

这是我解决问题的方法:

  1. 首先,找到你对应的 Python 版本的文件夹路径 ../site-packages/。(对我来说,在我的 Mac 上,使用 Snow Leopard 的 Python 2.6 的路径是 /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/。)
  2. 打开 Eclipse 的设置,找到 PyDev -> 解释器 - Python
  3. 在下方框的左侧,点击 新建文件夹
  4. 然后添加你找到的对应 Python 版本的 ../site-packages/ 路径。
  5. 点击 打开
  6. 点击 应用
  7. 最后点击 确定

这样就可以了。=)

感谢所有在评论中提供正确方向提示的朋友们。

撰写回答