Python如何搭建虚拟环境

241次阅读
没有评论

为什么要搭建虚拟环境

  1. 使不同应用开发环境相互独立
  2. 环境升级不影响其他应用,也不会影响全局的python环境
  3. 防止出现包管理混乱及包版本冲突

为此,我们需要安装两个包:virtualenv(virtualenvwrapper|virtualenvwrapper-win|virtualenvwrapper-powershell)

一、安装

安装virtualenv

这是一个python第三方库可以用它创建虚拟环境

pip install virtualenv

安装virtualenvwrapper

virtualenvwrappervirtualenv的扩展可以更方便的管理你的虚拟环境,因为我是Windows环境,所以这里安装的是virtualenvwrapper-win,但是只能在CMD终端下使用,不能在PowerShell终端下使用,但是可以安装virtualenvwrapper-powershell,如果是Linux环境可以安装:virtualenvwrapper

pip install virtualenvwrapper-win

查看是否安装成功

C:\Users\example>pip list
Package               Version
--------------------- ---------
virtualenv            20.24.5
virtualenvwrapper-win 1.2.7

看到virtualenvvirtualenvwrapper-win即代表安装成功了。

二、虚拟环境操作

创建虚拟环境

这里我们分别创建 test1 、test2 两个虚拟环境

mkvirtualenv test1
mkvirtualenv test2

查看虚拟环境

终端输入workon即可看见我们创建的虚拟环境,例如:test1test2

C:\Users\example>workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
test1
test2

进入虚拟环境

C:\Users\example>workon test1
(test1) C:\Users\example>

退出当前虚拟环境

指令:deactivate,在终端输入指令即可退出,路径前面括号与内容消失就代表已经退出所进入的虚拟环境了。

(test1) C:\Users\example>deactivate

C:\Users\example>if defined _OLD_VIRTUAL_PYTHONPATH (set "PYTHONPATH=" )

C:\Users\example>

删除虚拟环境

指令:rmvirtualenv

C:\Users\example>rmvirtualenv test1

    Deleted C:\Users\example\Envs\test1

三、其他问题

1、如何修改虚拟环境存放的目录?

默认路径是:%USERPROFILE%\Envs,如果要修改,需要先建立要存放的目录,然后打开系统变量新建变量名为:WORKON_HOME,值为:虚拟环境要存放的目录路径

参考文档:

2、如何在Powershell中使用?

官方文档中说明了不能在PowerShell使用的原因:https://github.com/davidmarble/virtualenvwrapper-win#virtualenvwrapper-win,如果安装的是virtualenvwrapper-win,那么在PowerShell执行 workon [虚拟环境名称] 无法进入虚拟环境的,这里有两种解决方式:一种就是上文提到过的安装virtualenvwrapper-powershel,另一种就是在PowerShell终端以CMD终端执行指令:

cmd /k workon test1

参考:

  • https://github.com/davidmarble/virtualenvwrapper-win/issues/105#issuecomment-493783659
正文完
 
wujingquan
版权声明:本站原创文章,由 wujingquan 2023-09-10发表,共计1818字。
转载说明:Unless otherwise specified, all articles are published by cc-4.0 protocol. Please indicate the source of reprint.
评论(没有评论)