为了更好地理解Python的导入系统是如何工作的,我在玩Python的导入系统时遇到了另一个问题。我有以下结构
pkg/
__init__.py
c.py
d.py
subpkg/
__init__.py
a.py
b.py
在a.py
中有以下代码:
from . import b
from .. import d
在c.py
中有以下内容:
import subpkg.a
但为什么?我该怎么解决呢?我正在从空闲中运行c.py
,PKG
应该被认为是一个包,因为它有__init__.py
文件。
第一个导入很好,但以下内容不起作用:
from .. import d
因为我试图从父包导入一些东西,但显然我不能,因为一些奇怪的原因。
这让我质疑我的精神错乱。
这一问题源于人们误将相对导入作为路径相对的混淆,而路径相对不是。
相对导入取决于运行的文件的位置。
根据第2条语句,必须在subpkg.a
的名称中至少有2个点,才能在其中运行from.
。
修复
在pkg之外创建一个新文件,例如main.py
pkg/
__init__.py
c.py
d.py
subpkg/
__init__.py
a.py
b.py
main.py
import pkg.c
from .subpkg import a
如何在Python中从低级目录导入类? 我一直在阅读如何将添加到文件夹中(或者这只是在Python2中吗?)或者如何使用,但是这些都不起作用。 通过下面的代码,我得到了:valueerror:尝试相对导入超出顶级包 文件2.py 谢谢你。
python 3.7.7,并在python 3.6.0上试用 我正在使用Django服务器,在我的views.py中 我正试着在探测器里得到我的函数。 我,我把我的探测器文件作为一个包返回到一个文件中, 我阅读了关于这个问题的所有stackoverflow问题。
问题内容: 我的项目存在以下问题,请帮帮我!这是我的包裹的结构: 这是foo1.py的实现: 当我运行foo1时,出现错误: ValueError:尝试了相对于顶级包的相对导入 。 我可以通过以下调整来解决它: 但是我想知道是否有一种方法可以不导入sys并在其中附加父目录。 我听说,例如,如果我有.py文件’/pkg/start.py’,它调用了我的foo1模块,那么两个点就可以了。但是,有什么方
我在configs/common中使用配置simulation.py。我知道错误了 完整错误: py:
这是我的文件结构: MainDir/ |Foo.py |SubDir/ || ||Bar.py 富。py: 酒吧py: 通过这段代码,我试图从Foo中获取var的值,并将其保存在Bar中 我在运行Foo时遇到此错误。py(和Bar.py):ImportError尝试在顶级包之外进行相对导入 我知道有很多这样的问题,但是我没有通过查看所有的问题来解决它。我被困在这个问题上大约一周了。提前谢谢!
问题内容: 这是我的文件夹结构: 在我有: 在时: 现在,当我发出: 我得到: 由于“多份原件打印”是在sys.path中,并正确地解决它为什么抱怨相对进口上述顶层包? 这是顶层包 ? 顺便说一句,这是我向旧项目中添加测试的尝试-在Python测试包布局中曾提出过要求,但作为Python单元测试去哪儿的副本被关闭了。对我当前的测试包布局的评论深表感谢! 那么下面的答案不适用于我的情况: 该 模块