Udacity人工智能交易仓库Python特殊import模式报错解决方案咨询
特殊导入模式原理
你看到的内容仅为../../../tests.py的tests.py不是普通Python脚本,而是Unix风格软链接(符号链接)。这是教程类仓库常用的代码复用方案:所有子目录的测试代码不需要重复复制根目录的公用测试工具,只需要创建软链接指向根目录的tests.py,Python导入时会自动读取根目录文件的内容,拿到project_test等函数定义。
报错的核心原因:
- Windows系统默认不支持这类软链接格式
- 克隆仓库时没有开启git的符号链接支持,导致git将软链接识别为普通文本文件,仅保存了指向的路径字符串,Python导入时无法解析到根目录的真实代码,自然找不到对应的导入对象。
解决方案
以下三种方案任选一种即可:
- 方案1:修复软链接配置(最贴合原仓库设计)
- Windows用户先开启系统「开发者模式」
- 执行git clone命令拉取仓库时加上
-c core.symlinks=true参数即可。
拉取完成后子目录的tests.py会被识别为正常软链接,导入逻辑即可正常运行。
- 方案2:手动修改子目录测试文件(无需重新拉取仓库)
把quiz/m1/L2目录下的tests.py内容替换为以下代码:
另外检查import sys import os # 将项目根目录加入Python模块搜索路径 sys.path.append(os.path.abspath(os.path.join(__file__, '../../../'))) # 导入根目录tests.py的所有公开对象 from tests import *quiz_tests.py的导入语句,如果存在from tests1 import ...属于笔误,修改为from tests import ...即可。 - 方案3:直接在Notebook中调整搜索路径(不需要修改任何本地文件)
在Notebook的第一个Cell执行以下代码:
后续你可以直接在Notebook中使用这些测试工具,不需要导入import sys import os # 提前将根目录加入搜索路径,直接使用根目录的测试工具 sys.path.append(os.path.abspath('../../../')) from tests import project_test, generate_random_tickers, generate_random_dates, assert_outputquiz_tests也可以运行测试逻辑。
内容的提问来源于stack exchange,提问作者semyd
相关产品推荐
相关产品推荐

