PyDev和Eclipse的未解决的导入问题


108

我对PyDev和Python还是很陌生,尽管我已经大量使用Eclipse来编写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中导入,我想从中导入odbchelper.py/Desktop/Python_Tutorials/diveintopython/py/

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

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

如此简单的事情令人非常沮丧……从我的机器上其他地方存在的文件中调用事物……需要这么多的努力。


确保PYTHONPATH中所有必需目录的大小写(大写)正确。
杰克逊

我知道已经解决了这个问题,但是grp模块的导入尚未解决。我只是将其添加到“ builtins首选项”>“ PyDev”>“解释器”>“ Python”>“强制内置”中的列表中,并且仍然对该模块自动完成填充
user1040495 2014年

Answers:


132

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


4
如果您正确设置pydev属性,则无需弄乱sys.path
Velociraptors

6
对于其他搜索者,我想补充一下我的经验-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文件夹。(stackoverflow.com/questions/2983088/unresolved-import-models)(stackoverflow.com/questions/4631377/...
杰夫Maass的

86
需要注意的另一点-可能需要重新启动Eclipse才能起作用。这似乎只能通过“文件->重新启动”来工作,而不能通过手动关闭和重新打开来工作。
soulBit 2011年

18
重要说明:我发现解释器Auto Config添加了C:\Python27\lib\site-packages,但是在我的计算机上,lib文件夹大写:C:\Python27\Lib\site-packages。用大写字母替换小写字母,然后File-> Restart为我解决了这个问题。希望能对其他人有所帮助:)
坎·杰克逊

10
@soulBit我希望我能对此提出意见20次,我花了一个小时试图弄清楚为什么我的进口货仍未解决。谢谢
Matt Dodge'2

51

我正在使用eclipse kepler 4.3,PyDev 3.9.2和在Ubuntu 14.04上遇到相同的问题。我尝试并花费了数小时,使用了以上所有大多数选项,但徒劳无功。然后我尝试了以下很棒的方法:

  • 选择项目 - > RightClick-> 的PyDev - > 删除PyDev的项目配置
  • 文件-> 重新启动

我认为我使用Python 2.7作为解释器,尽管它没有作用。


5
无需重新启动Eclipse,只需关闭并重新打开文件即可。它也可以在Windows和Eclipse Luna上使用,谢谢!
Noam Manos 2015年

我不得不重新启动Eclipse两次,以使警告消失。谢谢
Vladimir S.

同样适用于Python 3.7。这应该是这个问题的解决方案。
SPRBRN

我尝试了此操作,但现在无法启动DEV服务器。如何替换文件?
Lee Loftiss,

@ BitByty-Bake的根本原因是什么?
ankostis

42

我刚刚将WXWindows项目升级到Python 2.7,并且让Pydev识别新的解释器没有麻烦。进行与上述配置解释器相同的操作,重新安装了Eclipse和Pydev。以为python的某些部分一定已损坏,所以我再次重新安装了所有内容。啊!关闭并重新打开项目,然后在所有这些更改之间重新启动Eclipse。

最终注意到,您可以通过右键单击项目来“删除PyDev项目配置”。然后可以将其重新制作为PyDev项目,现在它就像金子一样好!


是的,关闭并重新打开了项目,以摆脱那些令人不安的ImportError消息
somnathchakrabarti

17

我修复了pythonpath,当我通过控制台导入内容时,一切都变得很花哨,但是无论我重新启动eclipse或刷新/清理项目多少次,所有这些以前无法解决的导入仍被标记为我的代码中的错误。

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


在odoo 10中使用liclipse可以很好地工作。谢谢!
Didierh '18

11

项目->属性-> pydev-pythonpath->外部库->添加源文件夹,添加项目的父文件夹。然后重新启动Eclipse。


2
好吧,这就是解决我的问题的方法。
西蒙·海沃德

无需重新启动即可,只需关闭并重新打开文件即可。为我修复它!
Jerther

4

这是为我工作的(由soulBit推荐):

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

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


1

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

  • 从“ Python解释器”中删除Python解释器,然后再次添加。
  • 或者只是在项目中使用的解释器中添加包含库的文件夹,就我而言,我使用的是“ bottle”,添加的文件夹是“ c:\ Python33 \ Lib \ site-packages \ bottle-0.11.6 -py3.3.egg”

现在,我不再看到该错误,并且代码完成功能也可以与“瓶”一起使用。


1

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

Pydev和* .pyc文件

... PyDev和pyc文件存在问题。对于我尝试引用的特定库,仅提供pyc文件。

这是我为解决此问题所做的工作:

  1. https://github.com/Mysterie/uncompyle2安装uncompyle2
  2. 对site-packages库中的* .pyc文件运行uncompyle2。例:

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

  3. 将由uncompyle2生成的结果* .pyc_dis文件重命名为* .py
  4. 将这些* .py文件移动/复制到站点软件包路径
  5. 在Eclipse中,选择File> Restart

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


0

以下,我认为会解决问题

  1. init .py 添加到“〜/ Desktop / Python_Tutorials / diveintopython / py”文件夹中
  2. 转到窗口->首选项-> PyDev->解释器-> Python解释器以删除您的Python解释器设置(原因是因为PyDev无法自动刷新对任何系统PythonPath所做的任何更新)
  3. 使用与之前相同的详细信息添加解释器(这将通过对PythonPath进行的更新来刷新Python解释器设置)
  4. 最后,由于您的“〜/ Desktop / Python_Tutorials / diveintopython / py”文件夹不是标准的PythonPath,因此需要将其添加。有两种方法可以实现

一个。按照大卫·德文的建议。但是,这仅适用于您所在的特定项目。在“窗口”->首选项-> PyDev->解释器-> Python解释器->库子选项卡-> NewFolder下,将“〜/ Desktop / Python_Tutorials / diveintopython / py”添加到新的PythonPath中

希望能帮助到你。


0

在尝试解决问题之后,通过理解PYTHONPATH,解释器和语法,我在导入其他库时遇到了一些问题,我发现我做了所有的编写,但问题仍然存在。之后,我只在出现导入错误的文件中添加一个新的空行,然后保存它们并解决了错误


-1
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")    

请考虑分开文件名和代码。而且您还需要修复一些缩进。
dkato
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.