如何从同一个包中导入包?

How can I import a package from within the same package?

提问人:DonPolettone 提问时间:11/14/2023 更新时间:11/15/2023 访问量:61

问:

我在这里得到了这个名为“pgk”的 python 包,我想从它本身的模块中导入它:

pkg/
    __init__.py
    test.py

__init__.py为空

test.py:

  • 尝试时,我得到:from .. import pkg
Traceback (most recent call last):
  File "C:\Game Dev\pkg\test.py", line 1, in <module>
    from .. import pkg
ValueError: attempted relative import beyond top-level package
  • 尝试时,我得到:import pkg
Traceback (most recent call last):
  File "C:\Game Dev\pkg\test.py", line 1, in <module>
    import pkg
ModuleNotFoundError: No module named 'pkg'

我读了很多关于 Python 3 中导入系统的文章,并且通常会解决这样的问题,但这次都失败了。我什至尝试过弄乱sys.path等东西,但我就是不知道如何实现这一目标。

python-3.x python-import

评论

0赞 DeepSpace 11/14/2023
你是如何执行的?即,当您这样做时,工作目录是什么?test.py
0赞 DonPolettone 11/14/2023
嗨,DeepSpace,我使用 IDLE 运行模块 test.py,cwd 是C:\Game Dev\pkg

答:

0赞 Nikoi Nikoi 11/15/2023 #1

我看到目录中只有一个文件(expept the init)。您是否尝试导入 test.py?

评论

0赞 DonPolettone 11/15/2023
嗨,Nikoi,我在 IDLE 中打开 test.py 并运行它。我想在 test.py 中导入 pkg。
0赞 Nikoi Nikoi 11/15/2023
您是否尝试从 pkg 导入单个模块?如果模块与 test.py 在同一个目录中,则可以使用 from pkg import some_module,否则,可以使用 sys 导入它们:import sys sys.path.append('/path/to/pkg') from pkg import some_module
0赞 DonPolettone 11/16/2023
我想从 test.py 中访问和使用整个 pkg,而不是包中的单个模块。也许我应该重新表述我的问题,因为这似乎不太清楚:目标是我有一个包(游戏引擎)。在这个包中,我想要一个用于展示引擎的模块。执行 test.py 模块时,会运行测试以展示包可以执行的操作,因此需要将其导入 test.py。
0赞 Community 11/16/2023
您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。
0赞 Nikoi Nikoi 11/17/2023
我的意思是,如果您尝试运行/访问包中的任何内容?您是否尝试将 test.py 放在其他子文件夹中并尝试导入包?您是否尝试过这样的系统方法:?import sys sys.path.append('/path/to/pkg') import pkg