求助:Jupyter Notebook无法找到api模块,但其他Python文件可正常导入
解决Jupyter Notebook无法导入本地api模块的问题
问题核心:你的tests目录下的Python文件能正常导入api模块,是因为执行这些文件时,Python的sys.path包含了/zen_api根目录(比如你在根目录下运行测试文件,或者测试文件里有路径处理逻辑);但Jupyter Notebook默认将当前notebook所在的/zen_api/playground作为工作目录,这个目录的上级目录不在sys.path中,所以找不到api模块。
下面是几种实用的解决方法:
临时解决:在Notebook中手动添加根目录到sys.path
在test.ipynb的最开始单元格添加以下代码,执行后再导入api模块:import sys from pathlib import Path # 获取当前notebook所在目录的父目录(即/zen_api) root_dir = Path.cwd().parent sys.path.append(str(root_dir))更便捷的方式:从根目录启动Jupyter
关闭当前运行的Jupyter服务,切换到/zen_api目录下,再执行jupyter lab或jupyter notebook命令启动服务。此时Jupyter的工作目录是根目录,直接就能导入api模块,无需额外修改路径。永久生效:配置PYTHONPATH环境变量
在虚拟环境的激活脚本中添加路径配置:- Linux/macOS:打开虚拟环境下的
bin/activate文件,添加一行:export PYTHONPATH="/path/to/zen_api:$PYTHONPATH" - Windows:打开虚拟环境下的
Scripts/activate.bat文件,添加一行:set PYTHONPATH=C:\path\to\zen_api;%PYTHONPATH%
保存后重新激活虚拟环境,再启动Jupyter,系统会自动将根目录加入
sys.path,后续所有Notebook都能直接导入api模块。- Linux/macOS:打开虚拟环境下的
内容的提问来源于stack exchange,提问作者Liondancer
相关产品推荐
相关产品推荐

