服务器上跑模型时莫名报了一个没有‘torch’包的错误
Traceback (most recent call last):
File "/home/ubuntu/.local/bin/accelerate", line 5, in <module>
from accelerate.commands.accelerate_cli import main
File "/home/ubuntu/.local/lib/python3.10/site-packages/accelerate/__init__.py", line 3, in <module>
from .accelerator import Accelerator
File "/home/ubuntu/.local/lib/python3.10/site-packages/accelerate/accelerator.py", line 32, in <module>
import torch
ModuleNotFoundError: No module named 'torch'
但在我的conda环境中是安装了pytorch的。这里注意到报错信息输出的是/home/ubuntu/.local/lib/python3.10/
。这里显示的python是3.10的,但在当前的conda环境中使用的python是3.9的。这意味着系统中有多个 Python 版本,并且可能在不同的环境中使用了不同的版本。这种情况下,accelerate 命令可能在错误的环境中运行,或者 PATH 环境变量可能指向了不同的 Python 解释器。
这里分别检查python和accelerate的安装路径
which python
which accelerate
显示的路径分别为
(python)/home/ubuntu/.conda/envs/Emb/bin/python
(accelerate)/home/ubuntu/.local/bin/accelerate
出现这种情况的原因可能是由于在安装 accelerate 时使用了用户级别的 pip 安装(通常是通过使用 pip install 命令),而不是在特定的 conda 环境中进行安装。这里有两种方法解决。
方法一
重新安装 accelerate
pip uninstall accelerate
pip install accelerate
或直接使用conda安装(大概率会报错)
conda install -c conda-forge accelerate
之后再验证accelerate的安装路径
方法二
方法一大概率是不行的,因为一开始安装时就用的pip install来安装的。
如果 accelerate 的安装路径仍然指向 /home/ubuntu/.local/bin/accelerate
,即使已经在 conda 环境中重新安装过。这可能意味着 /home/ubuntu/.local/bin
在 PATH 环境变量中的优先级高于 conda 环境的路径。
这里可以选择临时调整PATH:
export PATH="/home/ubuntu/.conda/envs/Emb/bin:$PATH"
这里的Emb是当前的conda环境名称,应该替换为自己的conda环境。
或者永久调整PATH:
打开shell配置文件(例如 .bashrc 或 .bash_profile),并调整 PATH 的设置,确保 conda 环境的路径位于 /home/ubuntu/.local/bin 前面。
# 在 .bashrc 或 .bash_profile
export PATH="/home/ubuntu/.conda/envs/Emb/bin:$PATH"
保存文件后,运行 source ~/.bashrc(或对应的配置文件名),或者重新开启一个新的终端会话,以应用更改。
再次查看accelerate的路径,这下应该是在conda环境中了。再次运行程序就不会报缺少‘torch’包的错了。