背景
原来安装了miniconda,备份了envs目录,卸载了miniconda后重新安装了miniforge,将envs目录恢复到miniforge的安装目录。在miniforge中可以看到原来的虚拟环境,也可以激活某个虚拟环境。但是在激活虚拟环境以后,无法使用该环境下安装过的wheel包。显示“无法执行:找不到需要的文件”。
(SenseVoice) latelinux@latelinux-laptop:~$ echo $PATH
:/home/latelinux/miniforge3/envs/SenseVoice/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
(SenseVoice) latelinux@latelinux-laptop:~/$ pip
bash: /home/latelinux/miniforge3/envs/SenseVoice/bin/pip: 无法执行:找不到需要的文件
原因
在<your-virtual-env-path>/bin
中,部分是可执行的二进制文件,例如python,而剩余的文件却是以脚本方式存在,例如pip(虽然它显示的是可执行文件,但它并不是一个二进制文件,而是一个脚本),以下是pip的内容,其中第一行的路径可以看到仍指向的旧的安装路径(miniconda3)。
(SenseVoice) latelinux@latelinux-laptop:~/miniforge3/envs/SenseVoice/bin$ cat ./pip
#!/home/latelinux/miniconda3/envs/SenseVoice/bin/python
# 这句话仍然指向miniconda3,而非miniforge3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
sys.argv