鉴于virtualenv不便于对虚拟环境集中管理 , 所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。
安装
virtualenvwrapper(确保virtualenv已安装)pip3 install virtualenv pip3 install virtualenvwrapper pip3 install virtualenvwrapper-win #Windows使用该命令virtualenvwrapper默认将所有的虚拟环境放在~/.virtualenvs目录下管理 , 可以修改环境变量WORKON_HOME来指定虚拟环境 的保存目录。安装完成后 , 需要进行一些配置。在你的
shell配置文件 ( 如~/.bashrc或~/.zshrc或/etc/profile) 中添加以下内容:export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 根据实际情况修改 Python 解释器路径 source /usr/local/bin/virtualenvwrapper.sh保存配置文件后 , 执行以下命令使配置生效:
[root@host-192-168-71-25 ~]# . /etc/profile virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkproject virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkproject virtualenvwrapper.user_scripts creating /root/.virtualenvs/initialize virtualenvwrapper.user_scripts creating /root/.virtualenvs/premkvirtualenv virtualenvwrapper.user_scripts creating /root/.virtualenvs/postmkvirtualenv virtualenvwrapper.user_scripts creating /root/.virtualenvs/prermvirtualenv virtualenvwrapper.user_scripts creating /root/.virtualenvs/postrmvirtualenv virtualenvwrapper.user_scripts creating /root/.virtualenvs/predeactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/postdeactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/preactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/postactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/get_env_detailsvirtualenvwrapper使用创建虚拟环境
mkvirtualenv,创建的同时 , 还默认激活了虚拟环境[root@host-192-168-71-25 ~]# mkvirtualenv projectenv7 created virtual environment CPython3.9.18.final.0-64 in 241ms creator CPython3Posix(dest=/root/.virtualenvs/projectenv7, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv) added seed packages: pip==25.1.1, setuptools==80.9.0 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator virtualenvwrapper.user_scripts creating /root/.virtualenvs/projectenv7/bin/predeactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/projectenv7/bin/postdeactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/projectenv7/bin/preactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/projectenv7/bin/postactivate virtualenvwrapper.user_scripts creating /root/.virtualenvs/projectenv7/bin/get_env_details (projectenv7) [root@host-192-168-71-25 ~]# 虚拟环境目录不会放到当前目录下了 , 它默认装在了
/root/.virtualenvs, 所有的虚拟环境都会放到这个目录下(projectenv7) [root@host-192-168-71-25 ~]# ll /root/.virtualenvs/ total 48 -rwxr-xr-x 1 root root 135 Aug 10 22:34 get_env_details -rw-r--r-- 1 root root 96 Aug 10 22:34 initialize -rw-r--r-- 1 root root 73 Aug 10 22:34 postactivate -rw-r--r-- 1 root root 75 Aug 10 22:34 postdeactivate -rwxr-xr-x 1 root root 66 Aug 10 22:34 postmkproject -rw-r--r-- 1 root root 73 Aug 10 22:34 postmkvirtualenv -rwxr-xr-x 1 root root 110 Aug 10 22:34 postrmvirtualenv -rwxr-xr-x 1 root root 99 Aug 10 22:34 preactivate -rw-r--r-- 1 root root 76 Aug 10 22:34 predeactivate -rwxr-xr-x 1 root root 91 Aug 10 22:34 premkproject -rwxr-xr-x 1 root root 130 Aug 10 22:34 premkvirtualenv -rwxr-xr-x 1 root root 111 Aug 10 22:34 prermvirtualenv drwxr-xr-x 5 root root 97 Aug 10 22:37 projectenv7 (projectenv7) [root@host-192-168-71-25 ~]# ll /root/.virtualenvs/projectenv7/ total 12 drwxr-xr-x 2 root root 4096 Aug 10 22:37 bin -rw-r--r-- 1 root root 194 Aug 10 22:37 CACHEDIR.TAG drwxr-xr-x 3 root root 23 Aug 10 22:37 lib drwxr-xr-x 3 root root 23 Aug 10 22:37 lib64 -rw-r--r-- 1 root root 209 Aug 10 22:37 pyvenv.cfg (projectenv7) [root@host-192-168-71-25 ~]# 如果想要指定
python版本 , 可以使用--python命令(projectenv7) [root@host-192-168-71-25 ~]# mkvirtualenv --python=/usr/bin/python3.12 projectenv8 # 有环境变量可以简化 (projectenv8) [root@host-192-168-71-25 ~]# mkvirtualenv --python=python3.11 projectenv9查看当前的虚拟环境目录
(projectenv9) [root@host-192-168-71-25 ~]# workon projectenv7 projectenv8 projectenv9切换虚拟环境
(projectenv9) [root@host-192-168-71-25 ~]# workon projectenv7 (projectenv7) [root@host-192-168-71-25 ~]# python -V Python 3.9.18 (projectenv7) [root@host-192-168-71-25 ~]# workon projectenv8 (projectenv8) [root@host-192-168-71-25 ~]# python -V Python 3.12.9 (projectenv8) [root@host-192-168-71-25 ~]# workon projectenv9 (projectenv9) [root@host-192-168-71-25 ~]# python -V Python 3.11.11退出虚拟环境
(projectenv9) [root@host-192-168-71-25 ~]# deactivate [root@host-192-168-71-25 ~]#删除虚拟环境
[root@host-192-168-71-25 ~]# rmvirtualenv projectenv9 Removing projectenv9... [root@host-192-168-71-25 ~]# ll .virtualenvs/ total 48 -rwxr-xr-x 1 root root 135 Aug 10 22:34 get_env_details -rw-r--r-- 1 root root 96 Aug 10 22:34 initialize -rw-r--r-- 1 root root 73 Aug 10 22:34 postactivate -rw-r--r-- 1 root root 75 Aug 10 22:34 postdeactivate -rwxr-xr-x 1 root root 66 Aug 10 22:34 postmkproject -rw-r--r-- 1 root root 73 Aug 10 22:34 postmkvirtualenv -rwxr-xr-x 1 root root 110 Aug 10 22:34 postrmvirtualenv -rwxr-xr-x 1 root root 99 Aug 10 22:34 preactivate -rw-r--r-- 1 root root 76 Aug 10 22:34 predeactivate -rwxr-xr-x 1 root root 91 Aug 10 22:34 premkproject -rwxr-xr-x 1 root root 130 Aug 10 22:34 premkvirtualenv -rwxr-xr-x 1 root root 111 Aug 10 22:34 prermvirtualenv drwxr-xr-x 5 root root 97 Aug 10 22:37 projectenv7 drwxr-xr-x 5 root root 97 Aug 10 22:43 projectenv8 virtualenvwrapper提供环境名字的tab补全功能。当您有很多环境 , 并且很难记住它们的名字时 , 这就显得很有用。workon也能停止您当前所在的环境 , 所以您可以在环境之间快速的切换。优缺点分析
它就是基于
virtualenv的封装 , 将所有虚拟环境整合在一个目录下 , 默认 (~/.virtualenvs)提供了很多
api, 可以管理(新增 , 删除 , 复制 , 切换)虚拟环境支持
tab补全 , 切换环境很方便。
参考链接
python多环境管理(venv与virtualenv) - doublexi - 博客园