PyDev 和 Eclipse 中未解决的导入问题
- 2025-04-16 08:58:00
- admin 原创
- 17
问题描述:
我对 PyDev 和 Python 还很陌生,虽然我经常用 Eclipse 来开发 Java。我正在尝试完成一些“深入 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
文件时都遗漏了某些问题。
令人沮丧的是,如此简单的事情......从我的机器上其他地方存在的某个文件中调用东西......需要付出这么多的努力。
解决方案 1:
在您的 pydev 项目的属性中,有一个名为“PyDev - PYTHONPATH”的窗格,其中包含一个名为“外部库”的子窗格。您可以__init__.py
使用该窗格将源文件夹(任何带有 的文件夹)添加到路径中。然后,您的项目代码将能够从这些源文件夹导入模块。
解决方案 2:
我使用的是 Eclipse Kepler 4.3 和 PyDev 3.9.2,在我的 Ubuntu 14.04 上也遇到了同样的问题。我尝试了好几个小时,尝试了以上所有方法,但都无济于事。后来我尝试了以下方法,效果很好:
选择项目->右键单击-> PyDev- >删除 PyDev 项目配置
文件->重新启动
我使用 Python 2.7 作为解释器,但我认为它没有效果。
解决方案 3:
我刚刚将一个 WXWindows 项目升级到 Python 2.7,但让 Pydev 识别新的解释器却一直麻烦不断。我按照上面的方法配置了解释器,并全新安装了 Eclipse 和 Pydev。我以为 Python 的某些部分可能损坏了,所以又重新安装了一遍。啊!我关闭并重新打开了项目,并在所有这些更改之间重启了 Eclipse。
终于注意到,右键点击项目,可以“移除 PyDev 项目配置”。然后,它就可以重新变成 PyDev 项目了,现在一切正常!
解决方案 4:
我修复了我的 pythonpath,当我通过控制台导入东西时一切都很顺利,但是所有这些以前未解决的导入仍然被标记为代码中的错误,无论我重新启动 eclipse 或刷新/清理项目多少次。
我右键点击项目->Pydev->移除错误标记,这个问题就解决了。不用担心,如果你的代码确实包含错误,它们会被重新标记。
解决方案 5:
项目-->属性-->pydev-pythonpath-->外部库-->添加源文件夹,添加项目的父文件夹。然后重新启动 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,在站点包路径中安装了一个库时遇到了这个问题。根据这个 SO 问题:
Pydev 和 *.pyc 文件
...PyDev 和 pyc 文件存在问题。就我尝试引用的那个库而言,它只提供了 pyc 文件。
以下是我为解决这个问题所做的事情:
从https://github.com/Mysterie/uncompyle2安装 uncompyle2
对站点包库中的 *.pyc 文件运行 uncompyle2。例如:
uncompyle2 -r -o /tmp /路径/到/站点包/lib
将 uncompyle2 生成的 .pyc_dis 文件重命名为 .py
将这些 *.py 文件移动/复制到站点包路径
在 Eclipse 中,选择“文件”>“重新启动”
与 .pyc 文件相关的未解决的导入错误现在应该消失。
解决方案 9:
我认为以下可以解决问题
将init .py添加到“~/Desktop/Python_Tutorials/diveintopython/py”文件夹
转到窗口 --> 首选项 --> PyDev --> 解释器 --> Python 解释器以删除您的 Python 解释器设置(原因是 PyDev 无法自动刷新对任何系统 PythonPath 所做的更新)
添加与之前相同的详细信息的解释器(这将使用对 PythonPath 的更新来刷新您的 Python 解释器设置)
最后,由于你的“~/Desktop/Python_Tutorials/diveintopython/py”文件夹不是标准的 PythonPath,你需要添加它。有两种方法可以做到这一点
按照 David German 的建议。但是,这仅适用于你所在的特定项目。b. 在“窗口 --> 首选项 --> PyDev --> 解释器 --> Python 解释器 --> 库子选项卡 --> 新建文件夹”下,将“~/Desktop/Python_Tutorials/diveintopython/py”添加到新的 PythonPath 中。
希望有帮助。
解决方案 10:
我在导入其他库时遇到了一些问题。尝试解决这个问题后,我通过理解 PYTHONPATH、解释器和语法,发现我虽然做了所有必要的操作,但问题仍然存在。之后,我只需在出现导入错误的文件中添加一个新的空行并保存,错误就解决了。
解决方案 11:
其他答案对我都不起作用。我可以在导入的文件中看到该函数,pylint 可以找到它,并且所有测试都通过了(是的,该函数被执行了)。直到我碰巧在 site.packages 目录上运行ls并看到 module.py 文件和 module.pyi 文件时,一切都没有帮助。pyi 文件是空的,我不知道它是从哪里来的(我肯定我手指笨了点,但不知道是什么),但我知道如果你有一个 pyi 文件,它就不能是空的。
我删除了该文件,重新启动了 Eclipse,一切恢复正常。
解决方案 12:
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")
扫码咨询,免费领取项目管理大礼包!