Python import 同级文件夹文件导入包 ModuleNotFoundError报错

 **目录结构**

#--- root
#   --- a.py
#   --- b.py
#   --- folder_a
#      ---  c.py
#      ---  d.py
#   --- folder_b
#      --- e.py
#      --- main.py
#
# 运行 main.py 时,需要导入 c.py的包
报错信息

(base) h@ai:~/work/code/YOLOX/tools$ python main.py
Traceback (most recent call last):
File “main.py”, line 31, in
from folder_a.c import fun1, fun2
ModuleNotFoundError: No module named ‘folder_a’

解决方法
# 在main.py文件夹,impor c 之前加入以下代码
import pathlib 
import sys

FILE = pathlib.Path(__file__).absolute() # 当前运行的main.py文件路径

ROOT = FILE.parents[0] # 加入 main.py所在文件夹路径

if str(ROOT) not in sys.path:
    sys.path.append(str(ROOT))
    sys.path.insert(0, str(ROOT))

# 上面不行再加入
import folder_a
# 直接从 folder_a 导入c.py文件的包
from folder_a.c import func

# 注意ROOT 需要转换为 str
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,我们可以使用`import`语句导入文件或模块。若要导入文件夹下的文件,需要进行一些额外的处理,避免出现。 首先,确保子文件夹下的文件是一个Python模块或可执行文件。若不是模块或文件,则无法被导入。确保子文件夹中的文件存在以下条件之一: 1. 文件的扩展名为`.py`(例如`myfile.py`),表明它是一个Python模块。 2. 文件的扩展名为`.pyc`(例如`myfile.pyc`),它是一个已编译的Python模块。 3. 文件是一个可执行文件,其中含一个Python脚本(例如`myfile`)。 接下来,我们需要确保可以找到子文件夹中的文件。可以使用以下两种方法之一: 1. 将子文件夹添加到Python的模块搜索路径中。 ```python import sys sys.path.append('subfolder_path') ``` 其中,`subfolder_path`是子文件夹的路径。 2. 使用相对或绝对路径导入文件夹中的文件。假设子文件夹名为`subfolder`,其中含一个名为`myfile.py`的模块。在主文件中,可以使用以下导入语句导入`myfile.py`模块: ```python from subfolder import myfile ``` 或者使用绝对路径: ```python from folder.subfolder import myfile ``` 其中,`folder`是主文件所在的父文件夹。 最后,确保导入的模块或文件名称正确并与导入语句一致。如果导入的模块或文件名拼写误、大小写误或与其他导入的模块重名,则可能会导致。 如果按照上述步骤进行操作仍然出现,可能是由于其他问题,如权限不足、文件路径不正确等。在遇到问题时,可以检查信息,修改代码,或提供详细的信息以获得更准确的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值