如何判断Python解释器是否用虚拟环境?及虚拟环境有效性确认
嘿,我来帮你梳理这两个问题的答案:
如何判断当前Python解释器是否正在使用虚拟环境?
有几个简单可靠的方法可以快速判断:
- 检查
VIRTUAL_ENV环境变量:在终端输入echo $VIRTUAL_ENV,如果输出虚拟环境的路径(比如你的pyvenv3目录),就说明当前处于虚拟环境中;如果是Python代码里,可以这么写:
输出不为import os print(os.environ.get('VIRTUAL_ENV'))None就代表正在使用虚拟环境。 - 查看Python解释器路径:终端里执行
which python(Linux/macOS)或者where python(Windows),如果路径指向虚拟环境目录下的bin(Linux/macOS)或Scripts(Windows)文件夹,就说明用的是虚拟环境的解释器;Python代码里可以通过以下方式查看:import sys print(sys.executable) - 检查site-packages目录:虚拟环境的第三方包会安装在独立的
site-packages目录里,执行下面的Python代码可以查看路径:
如果输出的路径包含你的虚拟环境目录,就说明当前在虚拟环境中。import site print(site.getsitepackages())
验证虚拟环境操作的有效性
先看你的操作和疑问:
我已创建Python 3虚拟环境并为elpy安装相关包,执行命令如下:
$ virtualenv --python=/usr/bin/python3.4 pyvenv3/
$ source pyvenv3/bin/activate
$ easy_install rope
$ easy_install autopep8
$ easy_install yapf
$ easy_install jedi
$ easy_install flake8
$ easy_install importmagic
终端提示符已变为:(pyvenv3)visteon@debian:~/Documents/bitbucket-python-scripts$,这是否意味着在此终端窗口运行Python3时会使用该虚拟环境?
答案是肯定的,终端提示符前出现(pyvenv3)就是虚拟环境激活成功的明确标志——在这个终端窗口里,无论是运行python还是python3,都会调用虚拟环境里的Python 3.4解释器,安装的包也只会存在于这个虚拟环境中,不会影响系统全局的Python环境。
再确认下你的操作有效性:
- 创建虚拟环境的命令是正确的:
virtualenv --python=/usr/bin/python3.4 pyvenv3/指定了用系统的Python 3.4作为基础,生成了独立的虚拟环境目录pyvenv3。 - 激活命令
source pyvenv3/bin/activate是Linux下激活虚拟环境的标准操作,执行后系统的环境变量会被修改,优先指向虚拟环境内的工具和包。 - 用
easy_install安装elpy依赖包是有效的,这些包都会被安装到pyvenv3/lib/python3.4/site-packages目录下,属于这个虚拟环境私有。
小提示:现在更推荐用pip来安装包,它比easy_install功能更完善(比如支持卸载、升级包),你可以用一条命令一次性安装所有依赖:
pip install rope autopep8 yapf jedi flake8 importmagic
内容的提问来源于stack exchange,提问作者Vladimir Zolotykh
相关产品推荐
相关产品推荐

