sys.path中没有项目根目录

 

在复现3DUnetCNN时,在项目根目录下:

D:\project\PytorchProject\3DUnetCNN> python unet3d/scripts/train.py --config_filename examples/brats2020/brats2020_config.json

但是报错:

Traceback (most recent call last):
  File "D:\project\PytorchProject\3DUnetCNN\unet3d\scripts\train.py", line 23, in <module>
    from unet3d.train import run_training
ModuleNotFoundError: No module named 'unet3d'

原因:Python 启动时,会按以下顺序填充 sys.path,导入模块时也会按这个顺序查找(找到即停止):脚本所在目录,PYTHONPATH 环境变量,Python 内置的 site-packages等。

因此sys.path中会加入train.py脚本所在目录(D:\project\PytorchProject\3DUnetCNN\unet3d\scripts),但是没有项目根目录(D:\project\PytorchProject\3DUnetCNN)

# 1. 打印当前目录
print(f"终端当前目录(os.getcwd()):{os.getcwd()}")
# 2. 打印「sys.path」的搜索路径
print("\nPython 的 sys.path 列表:")
for i, path in enumerate(sys.path):
    print(f"  {i}: {path}")
# 3. 检查当前目录是否在 sys.path 中
cwd_in_sys_path = os.getcwd() in sys.path
print(f"\n当前目录是否在 sys.path 中:{cwd_in_sys_path}")
终端当前目录(os.getcwd()):D:\project\PytorchProject\3DUnetCNN

Python 的 sys.path 列表:
  0: D:\project\PytorchProject\3DUnetCNN\unet3d\scripts
  1: D:\software\Anacanda3\envs\pytorch\python310.zip
  2: D:\software\Anacanda3\envs\pytorch\DLLs
  3: D:\software\Anacanda3\envs\pytorch\lib
  4: D:\software\Anacanda3\envs\pytorch
  5: D:\software\Anacanda3\envs\pytorch\lib\site-packages
  6: D:\software\Anacanda3\envs\pytorch\lib\site-packages\win32
  7: D:\software\Anacanda3\envs\pytorch\lib\site-packages\win32\lib
  8: D:\software\Anacanda3\envs\pytorch\lib\site-packages\Pythonwin

当前目录是否在 sys.path 中:False

因此,在train.py最前面添加:

import sys
sys.path.append(r"D:\project\PytorchProject\3DUnetCNN")