【Python】虚拟环境及在VS Code当中的使用

文章目录

  • 0 前期教程
  • 1 前言
  • 2 说说虚拟环境
  • 3 如何创建
  • 4 多python版本兼容问题
  • 5 如何移植
  • 6 在VS Code上如何使用

0 前期教程

  • 【Python】入门,总结与拾遗

1 前言

  最近因为一个基于Python的项目需要使用到很多陌生的第三方包,但python的特点又是安装的时候可以帮你解决依赖,但卸载的时候又不给你删除依赖,因此想要使用一个虚拟环境来实现这个项目,而且是基于我惯用的VS Code,总结一些要点。

2 说说虚拟环境

  感觉网上有很多文章将虚拟环境和python版本混为一谈,所谓虚拟环境,它的目的是解决不同项目同时依赖同一个第三方包,但是对版本要求却不一样的问题【python版本是固定的】,因此需要设置“分隔”,即虚拟环境,来实现不同项目运行在不同环境下,这样安装的包也只会在该环境下,不直接安装在python目录下。这样做的缺点也很明显,那就是占用磁盘,同一个包可能安装了好几遍。好处就是既实现了环境分隔,在打包成exe可执行程序时体积也会更小。
  如何实现python虚拟环境,貌似有很多种方式,主要是使用不同的包,或者是换软件,如anaconda,pycharm等。如果要使用VS Code,只能是使用不同类型的包,但是这里还是推荐使用最为广泛且使用不复杂的包——venv,这个包在安装python时就已经安装了。

附:官网链接

3 如何创建

  首先进入到项目文件夹,在终端输入

python -m venv ./venv

然后就会发现在项目文件夹下生成了一个名为venv的文件夹,当然,还可以加上其他的参数,在终端输入python -m venv -h可以查看所有的参数:

【Python】虚拟环境及在VS Code当中的使用_第1张图片
可以根据自己的需要选择。

  创建好环境后,如果需要在该环境下安装包,需要先激活环境:

.\venv\Scripts\Activate.ps1

在这里插入图片描述
如果要运行代码,建议关闭Code Runner插件,而是点击python插件中的运行按钮,只要在同一个终端运行即可。因为虚拟环境的本质实际上就是修改当前终端的环境变量,让执行的命令指向创建的环境,而不是电脑上安装的python环境。

  如果要退出虚拟环境,执行deactivate即可。
【Python】虚拟环境及在VS Code当中的使用_第2张图片

总的来说,venv这个包使用还是挺简单的

4 多python版本兼容问题

  前面提到,虚拟环境只能解决相同python版本,不同第三方包的情况,那问题来了,如果项目对python版本也挑怎么办?唯一的解决办法就是在电脑上安装多个python版本,然后通过改变文件名来解决命令行冲突的问题。
  以我的Windows为例,原来已经安装了python3.10,后来又装上了3.8,为了避免版本冲突问题,我将python.exe修改为py38.exe

【Python】虚拟环境及在VS Code当中的使用_第3张图片

这样在使用这个版本的python时,应该输入py38 .....,但是在使用venv这个包时发现了一个问题,那就是执行py38 -m venv ./venv时会报错:[WinError 2] 系统找不到指定的文件,通过查找资料在这个链接中找到一个大佬的帖子:

【Python】虚拟环境及在VS Code当中的使用_第4张图片

因此只需要将venv中的初始化文件修改一下即可。

5 如何移植

参考链接

  如果是别人做好的项目在自己电脑上怎么运行呢?venv这个包有一个特点,那就是在创建时会在复制的执行程序当中写入当前电脑中python环境的绝对路径,因此如果换一台设备基本可以确定不能使用,所以要想实现移植,首先要在原电脑上进入虚拟环境再导出包目录:

pip freeze > requirements.txt

在这里插入图片描述

此时会在项目路径下生成一个txt文件。

  当在另一台设备上运行这个项目时,首先在venv确定一下python的版本:

【Python】虚拟环境及在VS Code当中的使用_第5张图片

【Python】虚拟环境及在VS Code当中的使用_第6张图片

确定版本后,在项目文件夹下,使用对应的python版本运行venv,带上--clear参数即可清除之前的虚拟环境。

  然后就是配置第三方包。进入虚拟环境,执行下面的命令即可。

pip install -r .\requirements.txt

  到此虚拟环境就移植好了。

6 在VS Code上如何使用

  在VS Code上使用虚拟环境的主要问题在于代码编写时不会有提示,因为静态检查中只会去搜索电脑自带的python环境,而不会搜索当前项目下的虚拟环境。
  解决办法也很简单,加上虚拟环境的路径即可。
【Python】虚拟环境及在VS Code当中的使用_第7张图片

补上这一项即可

"python.autoComplete.extraPaths": [
     "./venv/Lib/site-packages"
],

  不过这样设置的限制也很大,首先是VS Code必须打开项目所在文件夹,而不能打开它的父级文件夹,这样保证上面的.代表的是项目文件夹。其次就是虚拟环境的文件夹名字只能是venv,这样保证上面这个路径能找到对应的包。所以如果项目比较复杂,建议还是用pycharm之类的软件,虚拟环境这块要方便点。

你可能感兴趣的:(#,Python,python,pycharm,vscode,venv,虚拟环境)