2011-01-07 81 views
94

我对PyDev和Python很新,尽管我已经使用了Eclipse for Java。我正在尝试通过一些Dive Into Python的例子,这感觉就像一个极其微不足道的问题,变得非常烦人。我正在使用Ubuntu Linux 10.04。PyDev和Eclipse未解决的导入问题

我希望能够使用该文件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 - 招取消错误消息,但该程序仍无法正常工作。我收到一个错误,ImportError: No module named odbchelper。所以显然没有获得路径,或者存在一些问题,即我添加__init__.py文件的所有排列组合都错过了。

这件事很简单...从我的机器上某处存在的某个文件中调用某些东西需要做很多工作,这非常令人沮丧。

+0

确保的情况下(大写)是在您的PYTHONPATH所有必要的目录正确。 – 2011-11-18 01:51:22

+0

我知道这已经被回答了,但是我正在为`grp`模块导入未解析的导入。我只是将它添加到Preferences> PyDev> Interpreters> Python> Forced Builtins中的`builtins`列表中,并且仍然可以自动完成该模块。 – user1040495 2014-02-08 19:47:32

回答

123

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

+4

如果正确设置了pydev属性,则不需要混淆“sys.path” – Velociraptors 2011-01-08 05:14:53

+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文件夹。 (http://stackoverflow.com/questions/2983088/unresolved-import-models)(http://stackoverflow.com/questions/4631377/unresolved-import-issues-with-pydev-and-eclipse) – MaasSql 2011-04-22 13:25:36

+80

另一点注意 - Eclipse可能需要重新启动才能工作。这似乎只能通过“文件 - >重新启动”而不是手动关闭和重新打开。 – soulBit 2011-05-11 14:51:28

40

我刚刚将一个WXWindows项目升级到了Python 2.7,并且没有让Pydev识别新解释器的麻烦。做了与上面配置解释器相同的事情,重新安装了Eclipse和Pydev。以为Python的某些部分一定是腐败的,所以我又重新安装了一切。 Arghh!关闭并重新打开该项目,并在所有这些更改之间重新启动Eclipse。

最后注意到您可以通过右键单击项目来“删除PyDev项目配置”。然后它可以再次变成一个PyDev项目,现在它就像金子一样好!

14

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

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

1

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

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

现在我看不到错误了,并且代码完成功能也适用于”bottle“。

1

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

Pydev and *.pyc Files

...有一个与PyDev的和PYC文件的问题。在我尝试引用的特定库的情况下,所有交付的是pyc文件。

这里就是我做来解决这个:

  1. https://github.com/Mysterie/uncompyle2
  2. 运行uncompyle2安装uncompyle2反对在站点包lib中* pyc文件。例如:

    uncompyle2 -r -o/TMP /路径/到/站点包/ lib中

  3. 重命名所得* .pyc_dis从uncompyle2产生为*的.py
  4. 移动/复制这些文件*。 PY文件到站点包路径
  5. 在Eclipse中,选择File>重新启动

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

7

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

4

这里是我(通过soulBit sugested)什么工作:

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

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

0

之后,在我看来,将解决这个问题

  1. 添加初始化。py到您的“〜/ Desktop/Python_Tutorials/diveintopython/py”文件夹
  2. 转到窗口 - >首选项 - > PyDev - >解释器 - > Python解释器来删除您的Python解释器设置(原因是因为PyDev无法自动刷新对任何系统PythonPath的任何更新)
  3. 在解释器中添加与以前相同的细节(这将刷新您的Python解释器设置并更新到您的PythonPath)
  4. 终于自“〜/ Desktop/Python_Tutorials/diveintopython/py“文件夹不是标准PythonPath,您需要将其添加进去。有两种方法可以做到这一点:

a。根据大卫德国人的建议。但是,这仅适用于您在 中的特定项目b。在窗口 - >首选项 - > PyDev - >解释器 - > Python解释器 - >库子选项卡 - > NewFolder中添加“〜/ Desktop/Python_Tutorials/diveintopython/py”

Hope它有助于。

31

我使用eclipse kepler 4.3,PyDev 3.9.2和我在我的ubuntu 14.04上遇到过同样的问题。我尝试了几个小时,并且花费了大部分时间,但徒劳无功。然后我尝试这是伟大如下:

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

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

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