Ubuntu22.04下virtualenv虚拟环境目录与激活路径异常咨询
运行环境
- 操作系统:Ubuntu 22.04
- Python版本:3.10.4
问题描述
安装Python 3.10后,执行virtualenv venv创建虚拟环境,发现生成的目录结构和常规情况不符,怀疑安装过程存在操作失误。
创建虚拟环境的执行输出如下:
virtualenv venv created virtual environment CPython3.10.4.final.0-64 in 74ms creator CPython3Posix(dest=/home/aravinth/Bureau/aa/venv, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/aravinth/.local/share/virtualenv) added seed packages: pip==22.1.2, setuptools==62.3.4, wheel==0.37.1 activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
执行ls venv查看目录内容,返回结果为:
ls venv lib local pyvenv.cfg
该虚拟环境需要执行source venv/local/bin/activate才能激活,和常规的source venv/bin/activate激活路径不一致。
解答
这个现象完全正常,不存在安装操作错误。
Ubuntu 22.04默认开启了usrmerge目录合并机制,系统原生就把根目录下的/bin、/lib等路径软链接到/usr/下的对应目录,统一了文件系统结构。virtualenv创建虚拟环境时会自动识别宿主系统的目录布局,适配生成和系统结构对齐的虚拟环境目录,因此才会出现local子目录,所有可执行文件都存放在local/bin路径下。
这种结构的虚拟环境功能没有任何异常,激活后安装依赖、运行Python代码的逻辑和传统结构的虚拟环境完全一致,直接正常使用即可。如果更习惯传统的顶层bin目录结构,创建虚拟环境时加上--without-usrsyspath参数,就能生成传统布局的虚拟环境。
内容的提问来源于stack exchange,提问作者Aravinth Balakrishnan
相关产品推荐
相关产品推荐

