猿问

Eclipse PyDev 中自己的包上的 Python ImportError /

已解决,谢谢!


假设我有一个自己编写的模块,C:\mymodules\general其中包含文件foo.py和__init__.py.


现在我想将bar()位于里面的函数导入foo.py到一个完全不同的地方的脚本中。


为什么这不起作用?


import sys

sys.path.append(r"C:\mymodules")

from general import foo


foo.bar()

我得到 ImportError: cannot import name 'foo'


如果我添加C:\mymodules\general到路径,则相同。


或者,我也试过


import sys

sys.path.append(r"C:\mymodules")

import general.foo


foo.bar()

在这里,我明白了ModuleNotFoundError: No module named 'general.foo'; 'general' is not a package。


为什么一般不会是一个包?我认为要求是“包含一个__init__.py”(当然还有我想导入的模块)?


这都是Python3,在Windows7下Eclipse中使用PyDev。


谁能告诉我出了什么问题以及如何做?


编辑:该文件确实已经被调用__init__.py,所以这不是问题。


__init__.py 已经包含该行


__all__ = ["foo"]

编辑2:奇怪的是,以下工作:


import sys

sys.path.append(r"C:\mymodules")

from general import *

bar()

不过,我真的不想这样做import *。当然必须有更清洁的方法吗?


编辑 3:当我从 IDLE 运行它时,它起作用了!(即第一个代码。)但是在 Eclipse PyDev 中,我仍然遇到相同的错误。为什么?


啊! 找到解决方案!(请参阅下面的答案,以关闭它)。


倚天杖
浏览 164回答 2
2回答
随时随地看视频慕课网APP

相关分类

Python
我要回答