gpt4 book ai didi

Python3 导入

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:30 31 4
gpt4 key购买 nike

我正在寻找一种导入模块的方法,以便我可以从子文件夹 project/v0 和根文件夹 project 运行脚本。/p>

我在 python 3.6 中的文件结构(这就是没有初始化文件的原因)

project
├── api.py
├── v0
│   ├── SearchEngine.py => contains SearchEngine class
│   └── SearchEngineBE.py

我的 SearchEngineBE.py 模块包含

from SearchEngine import SearchEngine

我的 api.py 模块包含

from v0.SearchEngineBE import SearchEngineBE 

第 1 步:当我从 project/v0 运行 python3 SearcheEngineBE.py 时,我的模块已正确导入并且一切顺利。

step2: 但是,当我从 project 运行 python3 run api.py 时,我得到了错误:

Traceback (most recent call last):
File "api.py", line 3, in <module>
from v0.SearchEngineBE import SearchEngineBE
File "/xxx/project/v0/SearchEngineBE.py", line 3, in <module>
from SearchEngine import SearchEngine
ModuleNotFoundError: No module named 'SearchEngine'

我该如何解决这个问题,以便第 1 步和第 2 步都能正常工作?

最佳答案

非相对导入由解释器在当前目录(以及任何其他搜索路径)中搜索。

您可以在 SearchEngineBE.py 文件中使用相对导入,让解释器知道您需要相关模块,而不是导入路径之外的模块:

# SearchEngineBE.py
from .SearchEngine import SearchEngine

. 让解释器知道您正在引用与当前模块相关的模块。您至少需要在与 SearchEngine.py 相同的目录中有一个空白的 __init__.py 文件才能使相对导入工作:

The __init__.py files are required to make Python treat directories containing the file as packages.

https://docs.python.org/3/tutorial/modules.html

有关更多讨论,请参阅本指南:https://chrisyeh96.github.io/2017/08/08/definitive-guide-python-imports.html#absolute-vs-relative-import

编辑:没有根包,这是行不通的。请参阅此帖子了解另一种方法:Importing modules from a neighbouring folder in Python

关于Python3 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56361809/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com