python - 从子目录导入模块会导致它在其目录中找不到其他模块
问题描述
我有以下结构
> external.py
- folder1
- folder2
> a.py
> b.py
文件 a.py:
from b import functionB
文件外部.py:
from folder1.folder2.a import functionA
如果我现在打电话python a.py
一切正常。但是调用python external.py
会导致:
ModuleNotFoundError: No module named 'b'
如果我将文件中的导入更改a.py
为:
from .b import functionB
然后调用python external.py
有效,但python a.py
结果是:
ImportError: attempted relative import with no known parent package
当我从文件夹结构外部导入模块 a 时,为什么模块 b 突然不再可见?
我尝试__init__.py
在几个地方添加文件,但没有取得多大成功。
解决方案
添加一个 try except 语句,a.py
它应该可以正常工作,当您导入a.py
from时,工作目录会发生变化external.py
try:
from b import functionB
except ImportError:
from folder1.folder2.b import functionb
推荐阅读
- javascript - 如何在 React-Native 中创建新的 var 并让用户获得价值?
- clock - NTP 发出的哪些系统调用会影响 CLOCK_MONOTONIC?
- vuejs2 - 获取请求后无法设置属性 - Axios 和 HTML5 数据列表
- javascript - 在单击侦听器旁边添加 keydown 事件 - 要侦听哪些键事件?
- html - 如何将 3 列对齐到 div 内的左侧?
- ios - swift中的异步任务后键盘不会关闭
- java - Java 的 awt KeyListener 是否在单独的线程上运行?
- c++ - Nvidia PhysX - 如何制作 TriangleMesh?
- javascript - jQuery hide() 和 show() 函数相互重叠
- java - 如何解决(Java + Spring + JPA + Hibernate Mappings)关系