1.按照github里的readme正常配置环境
因为autodl会将/root下的文件视为系统盘,将/autodl-tmp下的文件视为数据盘,所以这里其实应该cd autodl-tmp/neurad-studio,之后再pip install -e . 。也正是因为我是在/neurad-studio而不是/autodl-tmp/neurad-studio下pip install -e . ,导致后面出现了个错误浪费了很多时间。
2.在配置好环境之后,按照
训练模型,但是这里看上去是使用整个pandaset数据集进行训练,其实被训练的只有pandaset的001序列,因为代码中设置了sequence 的值为001。此时我想去训练其他序列,但是不管怎么修改/autodl-tmp/neurad-studio下.py文件的参数值,都没有任何改变。我想把render time设置的max改为8,在修改代码之后也没有任何改变。
3.原因分析
虽然运行的是/autodl-tmp/neurad-studio的train.py,但是train.py在import时并不是像文件操作那样从根目录文件找.py进行import,而是根据sys.path
列表里的路径寻找这些包或模块。
运行代码:
得出这样的输出:['', '/root/miniconda3/envs/neurad/lib/python310.zip', '/root/miniconda3/envs/neurad/lib/python3.10', '/root/miniconda3/envs/neurad/lib/python3.10/lib-dynload', '/root/miniconda3/envs/neurad/lib/python3.10/site-packages', '__editable__.neurad_studio-0.1.0.finder.__path_hook__']
从 sys.path
的输出中可以看到,并没有直接列出 /autodl-tmp/neurad-studio
或 /neurad-studio
,说明 Python 并没有直接通过 sys.path
来指定你的项目路径。这种情况下,可能是因为你安装了一个可编辑的 Python 包(__editable__.neurad_studio-0.1.0.finder.__path_hook__
),它可能通过某种方式默认指向了 /neurad-studio
。
这种情况通常出现在使用 pip install -e .
安装本地包时,Python 会动态加载这个包的源代码,但通常会锁定在一个文件路径上。例如,如果你是在 /root/neurad-studio
目录下运行了 pip install -e .
,这个路径将被固定为默认加载的路径,即便你在别的路径运行同样的包名,Python 仍然会指向 /root/neurad-studio
。
4.总结:由于前面是在/neurad-studio下pip install -e . ,所以python将/neurad-studio设置成了默认加载的路径,即使运行的是/autodl-tmp/neurad-studio的train.py,import的仍然是/neurad-studio的其他.py,而不是/autodl-tmp/neurad-studio的.py。
5.解决方法:进入 /autodl-tmp/neurad-studio
目录,重新执行 pip install -e .
,这样会把可编辑的路径指向这个新的目录。