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 未解决的导入问题的主要内容,如果未能解决你的问题,请参考以下文章