You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中Python子目录自动补全失效及导入错误求助

问题解决:Revit自定义Python库VS Code自动补全及导入问题

目标

为在Autodesk Revit中运行的自定义Python库,配置VS Code代码自动补全功能。

项目结构

├── my_directory
│   ├── script1.py
│   └── subdirectory
│       └── script2.py
└── lib
    ├── __init__.py
    ├── example.py
    └── converter
        ├── __init__.py
        └── converter_script.py

已执行操作

  • 在项目根目录创建.env文件,内容为:PYTHONPATH=${PYTHONPATH}:${workspaceFolder}/lib
  • 在项目根目录创建settings.json,内容为:
{
 "python.envFile": "${workspaceFolder}/.env",
 "python.autoComplete.extraPaths": [
     "${workspaceFolder}/lib"
 ]
}
  • 在电脑全局环境变量中添加lib目录路径

问题

希望在my_directory下的脚本中导入lib中的代码,目前仅example.py可正常导入、自动补全且能在Revit中运行;但导入converter_script.py时无自动补全,运行时出现错误:

ImportError: No module named converter_script

已在converter目录的__init__.py中添加了函数导入,求无需每次新增脚本或子目录都重新配置的解决方案。

script1.py 内容

from example import test_print                # 正常工作
from converter_script import converter_print  # 无法工作
converter_print()
test_print()
print('hola mundo')

解决方案

  1. 修正导入路径
    converter_script.py属于lib/converter子包,不能直接顶级导入,两种正确方式:
  • 从包路径导入模块:
    from converter.converter_script import converter_print
    
  • 利用converter/__init__.py导出的符号直接导入:
    如果你已经在converter/__init__.py中写了from .converter_script import converter_print,可简化为:
    from converter import converter_print
    
  1. 确保包结构规范
    所有子目录必须包含__init__.py文件(你已配置),Python才会将其识别为可导入的包,无需额外配置新目录。

  2. VS Code自动补全修复
    当前配置已经支持自动识别所有子包,若补全失效:

  • 按Ctrl+Shift+P选择「Reload Window」重启编辑器
  • 或选择「Python: Clear Cache and Reload Window」清除语言服务器缓存
  1. Revit运行环境兜底
    如果全局环境变量在Revit中未生效,可在脚本开头手动添加路径(优先用环境变量,此为备用方案):
import sys
import os
# 脚本位于my_directory,向上一级找到lib目录
sys.path.append(os.path.join(os.path.dirname(__file__), '../lib'))

内容的提问来源于stack exchange,提问作者IdoBa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:36:14