Docker中Jupyter Notebook跨目录导入Python模块失败排查
问题排查与解决
错误原因
你添加到sys.path的路径有误——你直接把Dir1的目录路径加进了sys.path,但Python执行from Dir1.file import *时,会去sys.path的每个目录下找名为Dir1的子文件夹。此时sys.path里的/serverRoot/home/steven/code/Dir1本身就是Dir1目录,里面根本没有嵌套的Dir1文件夹,自然会报模块找不到的错误。
两种解决方法
方法1:调整sys.path到Dir1的上级目录
把sys.path指向包含Dir1的code目录,让Python能定位到Dir1这个包:
import sys sys.path.append("/serverRoot/home/steven/code") from Dir1.file import *
方法2:直接导入file模块
既然已经把Dir1目录加到了sys.path,那里面的file.py可以直接作为模块导入:
import sys sys.path.append("/serverRoot/home/steven/code/Dir1") from file import * # 也可以用 import file,调用函数时写 file.函数名()
额外规范建议
如果想让导入逻辑更规范,可以在Dir1目录下创建一个空的__init__.py文件,让Dir1成为标准的Python包。
内容的提问来源于stack exchange,提问作者Steven T
相关产品推荐
相关产品推荐

