[英]"ModuleNotFoundError" when importing modules
在以下位置提出了类似的问题: Python subpackage import "no module named x"但我仍然无法解决我的问题。
我第一次将我的 python 代码分成模块和包。 以下是文件的设置方式(不是真实姓名):
└── projectfolder
|––main.py
|––package1
|--__init.py__
|--module1.py
|--subpackage1
|--__init.py__
|--module2.py
在 module2.py 中有一个 function(“function1”)应该在 module1.py 中的 function(“function2”)中使用。 然后应该在 main.py 中使用 Function2。
这首先是通过在 module1 中导入 suppackage1 来完成的:
import subpackage1
这是 subpackage1 中的__init__.py
中的代码:
from.module2 import function1
然后在位于 module1.py 中的 function2 中使用 Function1,如下所示:
subpackage1.function1()
这不会创建任何错误消息。 但是现在我想在 main.py 中调用 function2。 Package1 像这样导入到 main.py 中:
import package1
这是 package1 中的__init__.py
文件中的代码:
from.module1 import function2
然后我期待我可以像这样在 main.py 中毫无问题地使用 function2:
package1.function2()
但是当从 main.py 运行代码时,我收到此错误消息:
错误:
"Inside main.py" import package1
"Inside __init__.py which lies in package1" from .module1 import function2
"Inside module1.py" ModuleNotFoundError: No module named 'subpackage1'
我做错了什么? 有没有更好的方法来组织包和模块? 因为这已经很难只用几个文件来管理了。
简要地:
当您运行main.py
时,您的subpackage1
不在 scope 中,因此您无法使用import subpackage1
导入它。 有关此主题的更多信息,请参见此处。
考虑像这样重写import subpackage1
:
from package1 import subpackage1
或者将它添加到PYTHONPATH env 变量中,但我个人觉得那样更混乱
从这个答案来看,Python 中没有真正的子包,因为所有 package 引用都转到全局字典,这意味着没有本地字典,这意味着无法管理本地 package 引用。
您必须使用完整前缀或短前缀或别名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.