Ubuntu 20.04安装virtualenvwrapper后mkvirtualenv命令找不到问题
核心根因
你遇到的问题完全是Ubuntu 20.04软件源内的virtualenvwrapper 4.8.4版本,和8年前旧教程描述的文件布局不匹配导致的:
- 早年版本的包会把
virtualenvwrapper.sh放在/usr/bin路径下,现在这个路径下只有可执行的virtualenv二进制文件,负责加载命令的shell初始化脚本被挪到了系统共享资源目录 - 刚装完的文件不会被locate工具的索引收录,直接全局搜会出现“文件不存在”的假象
- deb包安装流程默认不会修改用户的Shell配置文件,就算文件完整存在,不手动添加加载逻辑,终端里永远不会生成
mkvirtualenv这类内置命令
分步解决操作
- 不用手动全局find或locate搜文件,直接用dpkg查询当前已安装的virtualenvwrapper包的所有文件路径,执行命令:
dpkg -L virtualenvwrapper
输出结果里定位virtualenvwrapper.sh的实际位置,Ubuntu 20.04下这个文件的标准存放路径是/usr/share/virtualenvwrapper/virtualenvwrapper.sh - 先检查包的依赖完整性,如果之前有残留的半安装状态,执行自动修复命令补全缺失依赖:
sudo apt install -f
确保python3-virtualenv、基础Python运行依赖没有缺失 - 把Shell加载配置写入对应终端的配置文件:用默认bash的用户编辑
~/.bashrc,用zsh的用户编辑~/.zshrc,在文件末尾追加以下配置:
必须说明:一定要加上# virtualenvwrapper 基础配置 export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/share/virtualenvwrapper/virtualenvwrapper.shVIRTUALENVWRAPPER_PYTHON的路径指定,不然脚本会默认寻找系统已经移除的Python2解释器,加载过程会静默失败,就算source了脚本,命令依旧找不到 - 让配置即时生效:
- bash用户执行:
source ~/.bashrc - zsh用户执行:
source ~/.zshrc
之后运行mkvirtualenv --version,能正常输出版本号就说明配置完成
- bash用户执行:
高频踩坑提示
- 别硬套旧教程里的
/usr/bin/virtualenvwrapper.sh路径手动source,这个路径现在根本不存在,纯做无用功 - 用locate搜系统文件前,一定要先执行
sudo updatedb更新索引,不然刚安装的文件就算存在也搜不到 - 如果之前手动用pip安装过其他版本的virtualenvwrapper,一定要把旧版本的加载配置从终端配置文件里删掉,避免多版本路径冲突导致加载失败
内容的提问来源于stack exchange,提问作者Luiz Ventura
相关产品推荐
相关产品推荐

