在复现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")
PREVIOUS深度学习框架pytorch
NEXTC++