Ubuntu18.04升级20.04后mkvirtualenv报错:找不到virtualenvwrapper.sh
解决virtualenvwrapper找不到virtualenvwrapper.sh的问题
问题描述
系统从Ubuntu 18.04升级到20.04后,尝试为Django项目创建Python3.8版本的虚拟环境时,执行mkvirtualenv命令报错:
ERROR: virtualenvwrapper could not find /usr/share/virtualenvwrapper/virtualenvwrapper.sh in your path
该文件实际存在,手动将文件路径加入PATH后问题仍未解决。
操作会话记录
$ mkvirtualenv -a /home/mark/python-projects/new_hopirockets_website -p /usr/bin/python3.8 new_hopi_rockets_website ERROR: virtualenvwrapper could not find /usr/share/virtualenvwrapper/virtualenvwrapper.sh in your path $ echo $PATH /usr/local/lib/nodejs/node-v12.4.0-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/share/virtualenvwrapper $ ls -alh /usr/share/virtualenvwrapper/virtualenvwrapper.sh -rw-r--r-- 1 root root 41K Sep 3 2019 /usr/share/virtualenvwrapper/virtualenvwrapper.sh $ export PATH=$PATH:/usr/share/virtualenvwrapper/virtualenvwrapper.sh $ echo $PATH /usr/local/lib/nodejs/node-v12.4.0-linux-x64/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/share/virtualenvwrapper:/usr/share/virtualenvwrapper/virtualenvwrapper.sh $ mkvirtualenv -a /home/mark/python-projects/new_hopirockets_website -p /usr/bin/python3.8 new_hopi_rockets_website ERROR: virtualenvwrapper could not find /usr/share/virtualenvwrapper/virtualenvwrapper.sh in your path $ /usr/bin/python3.8 Python 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> $ ls /home/mark/python-projects/new_hopirockets_website articles fred new_hopi_rockets_website.wpr run.sh bugs_new_hopirockets_website.ods full_text_search new_hopi_rockets_website.wpu sam.txt check.txt gallery old_gallery3 setup contact get_archive_data_from_tsunami.sh 'old stuff' simulation cp_tsunami-hopirockets_to_octopus.sh hit_counters payload_separated.txt soft-ui-dashboard cp_tsunami_to_octopus.sh hopirockets __pycache__ static database __init__.py README.txt test.sh DataTables launchdate requirements utils flights manage.py rsync_logs viewcount
当前.bashrc相关配置
# For virtualenv and mkvirtualenv export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV=/usr/share/virtualenvwrapper/virtualenvwrapper.sh source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
解决方案
1. 修正.bashrc中的错误配置
打开~/.bashrc,修改VIRTUALENVWRAPPER_VIRTUALENV变量:
# 原错误配置 # export VIRTUALENVWRAPPER_VIRTUALENV=/usr/share/virtualenvwrapper/virtualenvwrapper.sh # 修改为正确配置(指向virtualenv可执行文件) export VIRTUALENVWRAPPER_VIRTUALENV=/usr/bin/virtualenv
同时移除之前手动添加到PATH的/usr/share/virtualenvwrapper/virtualenvwrapper.sh(PATH仅需添加目录,无需添加单个脚本文件)。
2. 重新加载.bashrc配置
执行命令使修改生效:
source ~/.bashrc
3. 重新创建虚拟环境
再次执行原命令:
mkvirtualenv -a /home/mark/python-projects/new_hopirockets_website -p /usr/bin/python3.8 new_hopi_rockets_website
原因说明
VIRTUALENVWRAPPER_VIRTUALENV变量的作用是指定virtualenv工具的可执行文件路径,而非virtualenvwrapper的脚本文件,之前的配置错误导致脚本无法找到正确的virtualenv依赖,进而触发报错。- PATH环境变量用于存放可执行文件的目录,将单个脚本文件加入PATH是无效操作,无需执行。
内容的提问来源于stack exchange,提问作者user1045680
相关产品推荐
相关产品推荐

