已解决,谢谢!假设我有一个自己编写的模块,C:\mymodules\general其中包含文件foo.py和__init__.py.现在我想将bar()位于里面的函数导入foo.py到一个完全不同的地方的脚本中。为什么这不起作用?import syssys.path.append(r"C:\mymodules")from general import foofoo.bar()我得到 ImportError: cannot import name 'foo'如果我添加C:\mymodules\general到路径,则相同。或者,我也试过import syssys.path.append(r"C:\mymodules")import general.foofoo.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 syssys.path.append(r"C:\mymodules")from general import *bar()不过,我真的不想这样做import *。当然必须有更清洁的方法吗?编辑 3:当我从 IDLE 运行它时,它起作用了!(即第一个代码。)但是在 Eclipse PyDev 中,我仍然遇到相同的错误。为什么?啊! 找到解决方案!(请参阅下面的答案,以关闭它)。
添加回答
举报
0/150
提交
取消