VS Code中跨脚本导入函数失败:找不到sql.sql_import模块求助
问题描述
我在VS Code中克隆了一个内部代码仓库,仓库结构如下:
AnonymizedEmbeddings ├─ Makefile ├─ README.md ├─ src │ ├─ main │ │ ├─ __init__.py │ │ ├─ import_data.py │ └─ sql │ ├─ __init__.py │ └─ sql_import.py
通过容器启动Jupyter Notebook时,能正常执行from sql.sql_import import Z导入函数Z,但在VS Code里直接运行相同导入代码,却一直报错"No module named sql.sql_import"和"sql is not a package"。试过把脚本移到同一目录,问题还是没解决。
解决方案
方法1:手动添加src目录到Python路径(推荐新手)
这是最直接的做法,能快速对齐容器环境的路径设置:
- 打开你要运行的脚本(比如
src/main/import_data.py) - 在脚本最开头加入以下代码,把
src目录的绝对路径加入Python的模块搜索路径:
import sys import os # 自动获取src目录的路径,不管脚本放哪都能生效 src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) if src_dir not in sys.path: sys.path.append(src_dir)
加完之后再执行from sql.sql_import import Z就能正常导入了。
方法2:修改VS Code的运行工作目录
- 打开VS Code终端,切换到
AnonymizedEmbeddings/src目录(根据你本地的实际路径调整命令):
cd AnonymizedEmbeddings/src
- 然后在这个目录下运行你的脚本,比如:
python main/import_data.py
- 或者设置VS Code的运行配置永久生效:
- 点击左侧「运行和调试」图标,打开
launch.json文件 - 在配置里添加
"cwd": "${workspaceFolder}/src",示例配置如下:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "cwd": "${workspaceFolder}/src" } ] } - 点击左侧「运行和调试」图标,打开
方法3:把项目安装为可编辑包(适合长期开发)
如果需要长期维护这个项目,可以把它注册到Python的包管理系统里:
- 在VS Code终端进入
AnonymizedEmbeddings根目录 - 执行以下命令:
pip install -e .
这样Python会自动识别项目的包结构,之后不管在哪运行脚本,都能直接用from sql.sql_import import Z导入。
内容的提问来源于stack exchange,提问作者Mads-Emil Hvid Rasmussen
相关产品推荐
相关产品推荐

