问题总结与解决方案:系统优先执行了错误的 swift 脚本

问题描述

在激活 Conda 虚拟环境后,运行 swift 命令时未正确指向虚拟环境下的 swift 脚本,而是使用了系统全局路径 /home/xxx/.local/bin/swift,导致脚本调用异常。xxx为你的用户名


问题原因
  1. PATH 环境变量优先级错误/home/xxx/.local/bin 位于 /home/xxx/miniconda3/envs/modelscope/bin 之前,系统在查找 swift 命令时优先加载了全局路径中的脚本。
  2. 多余的 swift 安装:全局路径 /home/xxx/.local/bin/swift 存在冗余的 swift 文件,与虚拟环境中的版本冲突。
  3. 此时当你使用which swift  得到的是系统路径

解决方法

1. 临时解决方法:调整 PATH 顺序

export PATH=/home/xxx/miniconda3/envs/modelscope/bin:$PATH

执行后,运行以下命令验证:

which swift

输出应为:

/home/xxx/miniconda3/envs/modelscope/bin/swift


2. 永久解决方法:修改 ~/.bashrc 文件 编辑 ~/.bashrc 文件,将 Conda 环境路径提升优先级:

nano ~/.bashrc

添加以下内容至文件末尾:

export PATH=/home/caopb/miniconda3/envs/modelscope/bin:$PATH

保存并使更改生效:

source ~/.bashrc

3. 删除多余的 swift 脚本 确认是否需要 /home/caopb/.local/bin/swift,如果无用,可以删除:

rm -f /home/caopb/.local/bin/swift

4. 检查 swift 安装来源 在虚拟环境中,检查 swift 是否正确安装:

conda activate modelscope
pip show ms-swift

如果显示路径不是虚拟环境,重新安装:

pip uninstall swift ms-swift -y
pip install ms-swift

验证

重新激活虚拟环境并运行:

swift --help

若输出帮助信息,说明问题已解决。


结论

该问题源于 PATH 配置和重复安装,解决方法是调整路径优先级并删除多余的全局脚本。确保所有命令均在虚拟环境中执行,避免系统路径的干扰。

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐