PyDev 和 Eclipse 未解决的导入问题

Posted

技术标签:

【中文标题】PyDev 和 Eclipse 未解决的导入问题【英文标题】:Unresolved Import Issues with PyDev and Eclipse 【发布时间】:2011-06-05 14:33:51 【问题描述】:

我对 PyDev 和 Python 非常陌生,尽管我已经大量使用 Eclipse for Java。我正在尝试处理一些 Dive Into Python 示例,这感觉就像一个非常微不足道的问题,只是变得非常烦人。我使用的是 Ubuntu Linux 10.04。

我希望能够使用文件 odbchelper.py,它位于目录/Desktop/Python_Tutorials/diveintopython/py

这是我在 PyDev/Eclipse 项目中处理的 example.py 文件:

import sys
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py")

这很好用,但是我希望我的代码的下一行是:

import odbchelper

这每次都会导致未解决的导入错误。我已将__init__.py 文件添加到几乎所有可能的目录中,但它没有任何帮助。我尝试一次将__init__.py 文件添加到项目位置和odbchelper.py 文件之间的各个级别的目录中,并且我还尝试将__init__.py 文件同时添加到两者之间的所有目录中.两者都不起作用。

我想要做的就是在其他目录的某个地方有一个项目,比如/Desktop/MyStuff/Project,其中我有example.py ...然后从example.py我想从/Desktop/Python_Tutorials/diveintopython/py/导入odbchelper.py

我可以找到的每个留言板响应都只是说使用sys.path.append() 函数将此目录添加到我的路径,然后导入它......但这正是我在我的代码中所做的并且它不起作用。

我也尝试了 Ctrl-1 技巧来抑制错误消息,但程序仍然无法正常运行。我收到一个错误,ImportError: No module named odbchelper。所以显然没有添加路径,或者我添加__init__.py文件的所有排列都错过了一些问题。

令人沮丧的是,这么简单的事情……从我机器上其他地方的某个文件中调用东西……需要这么多的努力。

【问题讨论】:

确保 PYTHONPATH 中所有必要目录的大小写(大写)都是正确的。 我知道这已经得到解答,但我得到了 grp 模块的未解决导入。我刚刚将它添加到 Preferences>PyDev>Interpreters>Python>Forced Builtins 的 builtins 列表中,并且仍然获得该模块的自动完成 【参考方案1】:

在您的 pydev 项目的属性中,有一个名为“PyDev - PYTHONPATH”的窗格,以及一个名为“外部库”的子窗格。您可以使用该窗格将源文件夹(具有__init__.py 的任何文件夹)添加到路径。然后,您的项目代码将能够从这些源文件夹中导入模块。

【讨论】:

如果你正确设置了pydev属性,你就不用乱搞sys.path 对于其他搜索者,我想添加我的经验 -Windows 7、Python 2.7.1、Eclipse 3.6.2、PyDev、Pyschopg(对于 Python 2.7 amd64)。 Psychopg 的安装到 C:\Python27\Lib\site-packages\psycopg2 (在 Python 2.7 安装下)。我首先使用 init.py 引用了该文件夹和所有子文件夹,但发现我还必须引用 site_packages 文件夹。 (***.com/questions/2983088/unresolved-import-models)(***.com/questions/4631377/…) 还有一点需要注意 - Eclipse 可能需要重新启动才能正常工作。这似乎只能通过“文件->重新启动”而不是通过手动关闭和重新打开来工作。 重要提示: 我发现解释器 Auto Config 添加了C:\Python27\lib\site-packages,但在我的计算机上,lib 文件夹大写:C:\Python27\Lib\site-packages。将小写条目替换为大写条目,然后 File->Restart 为我解决了这个问题。希望对其他人有帮助:) @soulBit 我希望我能点赞该评论 20 次,我花了一个小时试图弄清楚为什么我的导入仍未解决。谢谢【参考方案2】:

我正在使用 eclipse kepler 4.3、PyDev 3.9.2 和我的 ubuntu 14.04 我遇到了同样的问题。我尝试并花了几个小时,上面所有的大多数选项都是徒劳的。然后我尝试了以下很棒的方法:

选择项目->右键单击-> PyDev-> 删除PyDev项目配置 文件-> 重启

我使用 Python 2.7 作为解释器,虽然我认为它不起作用。

【讨论】:

无需重启 Eclipse,只需关闭并重新打开文件即可。它也适用于带有 Eclipse Luna 的 Windows,谢谢! 我不得不重新启动 Eclipse 两次以使警告消失。谢谢 也适用于 Python 3.7。这应该是这个问题的解决方案。 我试过了,现在我无法启动我的 DEV 服务器。如何替换文件? @BitByty-Bake 的根本原因是什么?【参考方案3】:

我刚刚将一个 WXWindows 项目升级到 Python 2.7,让 Pydev 识别新的解释器时遇到了无穷无尽的麻烦。做了与上面配置解释器相同的事情,重新安装了 Eclipse 和 Pydev。认为python的某些部分一定已经损坏,所以我重新安装了所有东西。啊!关闭并重新打开项目,并在所有这些更改之间重新启动 Eclipse。

终于注意到您可以通过右键单击项目来“删除 PyDev 项目配置”。然后又可以做成PyDev项目了,简直就是金子!

【讨论】:

是的,关闭并重新打开项目以消除令人不安的 ImportError 消息【参考方案4】:

我修复了我的 pythonpath,当我通过控制台导入东西时,一切都很好,但所有这些以前未解决的导入仍然在我的代码中标记为错误,无论我重新启动 eclipse 或刷新/清理项目多少次。

我右键单击项目->Pydev->删除错误标记,它摆脱了这个问题。不用担心,如果您的代码包含实际错误,它们将被重新标记。

【讨论】:

在 odoo 10 中使用 liclipse 可以正常工作。谢谢!【参考方案5】:

project-->properties-->pydev-pythonpath-->external libraries-->add源文件夹,添加项目的PARENT FOLDER。然后重启eclipse。

【讨论】:

嗯,这是解决我问题的那个。 无需重新启动,只需关闭并重新打开文件即可。帮我修好了!【参考方案6】:

这对我有用(soulBit 建议):

1) Restart using restart from the file menu
2) Once it started again, manually close and open it.

这是有史以来最简单的解决方案,它完全消除了烦人的事情。

【讨论】:

【参考方案7】:

有两种方法可以解决这个问题:

从“Python解释器”中删除Python解释器并重新添加。 或者只是在项目中使用的解释器中添加包含库的文件夹,在我的情况下,我使用的是“bottle”,我添加的文件夹是“c:\Python33\Lib\site-packages\bottle- 0.11.6-py3.3.egg"

现在我看不到错误了,代码完成功能也可以与“bottle”一起使用。

【讨论】:

【参考方案8】:

我正在运行 Eclipse 4.2.0 (Juno) 和 PyDev 2.8.1,并在我的站点包路径中安装了一个 lib 时遇到了这个问题。根据这个 SO 问题:

Pydev and *.pyc Files

...PyDev 和 pyc 文件存在问题。在我尝试引用的特定库的情况下,交付的只是 pyc 文件。

这是我为解决这个问题所做的:

    从https://github.com/Mysterie/uncompyle2 安装 uncompyle2

    对站点包库中的 *​​.pyc 文件运行 uncompyle2。示例:

    uncompyle2 -r -o /tmp /path/to/site-packages/lib

    将 uncompyle2 生成的 *.pyc_dis 文件重命名为 *.py 将这些 *.py 文件移动/复制到站点包路径 在 Eclipse 中,选择文件 > 重新启动

与 .pyc 文件相关的未解决导入错误现在应该消失了。

【讨论】:

【参考方案9】:

以下,在我看来将解决问题

    init.py 添加到您的“~/Desktop/Python_Tutorials/diveintopython/py”文件夹中 转到 Window --> Preferences --> PyDev --> Interpreters --> Python Interpreter 以删除您的 Python Interpreter 设置(原因是 PyDev 无法自动刷新对任何 System PythonPath 所做的任何更新) 使用与以前相同的详细信息添加解释器(这将使用对 PythonPath 所做的更新刷新您的 Python 解释器设置) 最后,由于您的“~/Desktop/Python_Tutorials/diveintopython/py”文件夹不是标准的 PythonPath,您需要将其添加进去。有两种方法可以做到

一个。根据 David German 的建议。但是,这仅适用于您所在的特定项目 湾。在 Window --> Preferences --> PyDev --> Interpreters --> Python Interpreter --> Libraries subtab --> NewFolder 下将 "~/Desktop/Python_Tutorials/diveintopython/py" 添加到新的 PythonPath 中

希望对你有帮助。

【讨论】:

【参考方案10】:

在尝试解决问题后,通过了解,我在导入其他库时遇到了一些问题 PYTHONPATH, Interpreter, and Grammar 我发现我什么都写了,但问题仍然存在。之后,我只是在有导入错误的文件中添加一个新的空行并保存它们,错误就解决了

【讨论】:

【参考方案11】:
KD.py

class A:
a=10;

KD2.py 
from com.jbk.KD import A;
class B:
  b=120;

aa=A();
print(aa.a)

这对我来说完美的文件

另一个例子是

main.py
=======
from com.jbk.scenarios.objectcreation.settings import _init
from com.jbk.scenarios.objectcreation.subfile import stuff

_init();
stuff();

settings.py
==========
def _init():
print("kiran")


subfile.py
==========
def stuff():
print("asasas")    

【讨论】:

请考虑将文件名和代码分开。而且你还需要修复一些缩进。

以上是关于PyDev 和 Eclipse 未解决的导入问题的主要内容,如果未能解决你的问题,请参考以下文章

未解决的导入:模型

Eclipse+PyDev+GAE memcache“来自导入的未定义变量:get”

如何修复 PyDev“导入未定义变量”错误?

Eclipse,PyDev“未指定项目解释器”

主要功能未在 Pydev Eclipse 中执行

如何为 PyDev 配置 Eclipse? Python 未出现在“首选项”窗口中