virtualenv系列 · 打通virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境

Posted bluishglc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了virtualenv系列 · 打通virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境相关的知识,希望对你有一定的参考价值。

PyCharm/IntelliJ IDEA已经内置了对virtualenv的支持,当我们为一个项目创建一个新的Python SDK时,就会进入到Add Python Interpreter对话框,选择Virtualenv Environment -> New environment就将创建一套新的virtualenv环境。这里,我们要留心的是PyCharm/IntelliJ IDEA在新建虚拟环境时给出的两项配置的默认值:

  • Location:这是虚拟环境的存放目录,如果用户不显式配置,则默认值是:%USERPROFILE%\\.virtualenvs\\<项目名称>
  • Base interpreter:当前操作系统上的默认Python环境(等同于使用virtualenv命令行创建虚拟环境时不显式提供-p参数,此时使用的也是当前操作系统上的默认Python环境)

当然,我们完全可以调整这些默认值,例如:将Location改到项目目录下,使用.venv文件夹,或者是选择本地安装的其他版本的Python系统环境作为Base interpreter, 这两个配置项和使用virtualenv命令行创建虚拟环境时所要填入的dest以及-p参数是完全对等的:

接下来,我们要考虑的是:在本地启用了virtualenvwrapper的情况下,如何将virtualenvwrapper创建的虚拟环境和PyCharm/IntelliJ IDEA创建的虚拟环境对齐,也就是保持一致的视图。这件事要分两个方向看:

1. 在PyCharm/IntelliJ IDEA上使用virtualenvwrapper创建的虚拟环境

这个非常简单,只要在PyCharm/IntelliJ IDEA的Virtualenv Environment配置环节选择Existing environment,然后给出目标虚拟环境中的python.exe路径即可

2. 在virtualenvwrapper中使用PyCharm/IntelliJ IDEA

其实这个问题也很简单,我们知道,virtualenvwrapper会将所有的虚拟环境集中放置在一个目录下,这个目录由一个环境变量控制,即:WORKON_HOME,如果当前操作系统没有显式配置这个变量的话,则它的默认值在Linux上是$HOME/.virtualenvs,而对于virtualenvwrapper来说,只要是在WORKON_HOME下的子目录,都会被视作一个独立的虚拟环境(经过测试表明,即使只是创建一个空的文件夹,在使用workon命令罗列虚拟环境时,新键的空文件夹也会出现在虚拟环境列表中),这样的话,其实解决思路就很简单了:只要将PyCharm/IntelliJ IDEA创建虚拟环境集时使用的默认根目录%USERPROFILE%\\.virtualenvs和virtualenvwrapper的WORKON_HOME目录配置为同一目录,就可以在virtualenvwrapper中自动发现PyCharm/IntelliJ IDEA创建的虚拟环境了。

从PyCharm/IntelliJ IDEA对于默认虚拟环境存放路径的选择上就可以看出:PyCharm/IntelliJ IDEA就是在主动和virtualenvwrapper进行对接,因为它的同样使用了用户根目录,并且根目录的默认名称取名为.virtualenvs也绝对不是偶然,就是为了和virtualenvwrapper无缝对接!实际上,在Linux系统上,virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境根目录已经自动对齐了,都是:$HOME/.virtualenvs,并不需要做其他额外的动作,但是在Windows系统上,我们发现在不显式配置WORKON_HOME环境变量的情况下,virtualenvwrapper的脚本中使用的默认目录是%USERPROFILE%\\Envs

实际验证也是如此。所以在Windows上,打通virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境需要做一项工作:显式地配置WORKON_HOME环境变量,使其指向%USERPROFILE%\\.virtualenvs,如下图所示:


注意,理论上这个变量是用户级别的环境变量,因为考虑到不同用户会构建自己的虚拟环境,需要用户与用户之前进行隔离。如果配置成系统环境变量也是可以的,此时不要使用Hard Code的用户路径,而应使用%USERPROFILE%\\.virtualenvs!


关联阅读

virtualenv系列 (1) · 导致Python多版本依赖困境的根源
virtualenv系列 (2) · 系统环境与虚拟环境
virtualenv系列 (3) · 创建虚拟环境
virtualenv系列 (4) · 统一管理虚拟环境
virtualenv系列 (5) · 打通virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境

以上是关于virtualenv系列 · 打通virtualenvwrapper和PyCharm/IntelliJ IDEA的虚拟环境的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes网络自学系列 | 打通CNI与Kubernetes:Kubernetes网络驱动

virtualenv系列 · 统一管理虚拟环境

Nodejs系列课程,从入门到进阶帮你打通全栈

打通JAVA与内核系列之一ReentrantLock锁的实现原理

cisco asa5505 web管理的配置

CiscoASA5515防火墙ssh配置问题