开发者

Python 虚拟环境venv详解

开发者 https://www.devze.com 2022-12-01 10:49 出处:网络 作者: 小菠萝测试笔记
目录什么是虚拟环境一句话总结为什么要虚拟环境说下背景了解下第三方库的安装目录带来的问题通过venv操作虚拟环境创建虚拟环境激活虚拟环境关闭虚拟环境Pycharm项目关联新创建的虚拟环境Pytho...
目录
  • 什么是虚拟环境
    • 一句话总结
  • 为什么要虚拟环境
    • 说下背景
    • 了解下第三方库的安装目录
    • 带来的问题
  • 通过 venv 操作虚拟环境
    • 创建虚拟环境
    • 激活虚拟环境
    • 关闭虚拟环境
  • Pycharm 项目关联新创建的虚拟环境
    • python Interpreter 选中虚拟环境
    • 安装项目所需要的库
  • Pycharm 创建虚拟环境
    • 查看虚拟环境的目录
      • bin
      • include
      • lib
    • 从虚拟环境生成 requirement.txt
      • 先看看有哪些包
      • pip freewww.cppcns.comze
    • 包管理利器 popety

      什么是虚拟环境

      • 这是 Python 3.3 的新特性:https://www.python.org/dev/peps/pep-0405/
      • 假设自己电脑主机的 Python 环境称为系统环境,而默认情况下,虚拟环境和系统环境是完全隔离的
      • 每个系统环境下可以有多个虚拟环境
      • 每个虚拟环境都有自己的 Python 二进制文件及单独的包安装目录,可以在虚拟环境中安装属于自己的 Python 包,而系统环境、其他虚拟环境并不会拥有这些 Python 包

      一句话总结

      Python 虚拟环境主要是为不同 Python 项目创建一个隔离的环境,每个项目都可以拥有独立的依赖包环境,而项目间的依赖包互不影响

      为什么要虚拟环境

      说下背景

      • 假设一个电脑包含多个 Python 项目
      • 每个项目所需的 Python 版本不一致,比如:Python 2.X、Python 3.X
      • 每个项目所需的依赖包不一致,比如 A 项目只要 Selenium 相关依赖包,B 项目只要 Appium 相关依赖包
      • 不同项目用同一个依赖包,但依赖包版本可能不一致

      假设现在不用虚拟环境会有什么问题?

      了解下第三方库的安装目录

      默认情况下,Python 第三方库都是装在系统固定目录的,比如 Mac 电脑

      >>> import site
      >>> site.getsitepackages()
      ['/usr/local/Cellar/python@3.9/3.9.5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages']

      电脑上所有项目都会从这个目录去存储、查找第三方库(站点库)

      带来的问题

      • 不同项目使用同一个依赖包,但使用不同版本的依赖包时,意味着当开发 A 项目的时候,要装一次依赖包 A 版本,转开发 B 项目时,先要卸载依赖包 A 版本,再重装 B 版本...
      • 一个环境下要安装所有项目需要的依赖包,所以当某个项目需要生成 requirement.txt 的时候,会带上很多用不上的依赖包,要删还得手工一个个删....

      通过 venv 操作虚拟环境

      Python 3.5 后推荐使用 venv 来创建虚拟环境

      创建虚拟环境

      python3 -m venv fastapi_test

      fastapi_test 是虚拟环境名字,可以自定义

      激活虚拟环境

      source <环境名称>/bin/activate 

      Python 虚拟环境venv详解

      可以看到虚拟环境中的 Package 只有最基础的 pip、setuptools

      关闭虚拟环境

      deactivate

      Pycharm 项目关联新创建的虚拟环境

      Python 虚拟环境venv详解

      先在项目目录下创建好虚拟环境

      Python Interpreter 选中虚拟环境

      Python 虚拟环境venv详解

      安装项目所需要的库

      Python 虚拟环境venv详解

      Pycharm 创建虚拟环境

      Python 虚拟环境venv详解

      • 选中 Python Interpreter
      • 查看更多 Interpreters
      • 添加一个新的 Interpreters
      • 选择 New environment,默认选项即可,确定

      Python 虚拟环境venv详解

      查看虚拟环境的目录

      Python 虚拟环境venv详解

      刚刚创建的两个虚拟环境的目录其实是一样的

      bin

      与虚拟环境交互的文件

      >> ll
      total 72
      -rw-r--r--  1 polo  staff   8.6K Sep 14 09:26 Activate.ps1
      -rw-r--r--  1 polo  staff   1.9K Sep 14 09:26 activate
      -rw-r--r--  1 polo  staff   882B Sep 14 09:26 activate.csh
      -rw-r--r--  1 polo  staff   2.0K Sep 14 09:26 activate.fish
      -rwxr-xr-x  1 polo  staff   269B Sep 14 08:40 pip
      -rwxr-xr-x  1 polo  staff   269B Sep 14 08:40 pip3
      -rwxr-xr-x  1 polo  staff   269B Sep 14 08:40 pip3.9
      lrwxr-xr-x  1 polo  staff     9B Sep 14 08:40 python -> python3.9
      lrwxr-xr-x  1 polo  staff     9B Sep 14 08:40 python3 -> python3.9
      lrwxr-xr-x  1 polo  staff    39B Sep 14 08:40 python3.9 -> /usr/local/opt/python@3.9/bin/python3.9

      include

      编译 Python 包的 C 头文件

      lib

      包含Python 版本的副本(python3.9),以及安装每个依赖包的 site-packages 文件夹

      >> pwd
      /Users/polo/Downloads/FastAPI_project/fastapi_test/lib/python3.9/site-packages
      
      >> ll
      total 224
      drwxr-xr-x   3 polo  staff    96B Sep 14 09:27 __pycache__
      drwxr-xr-x   5 polo  staff   160B Sep 14 08:40 _distutils_hack
      -rw-r--r--   1 polo  staff   152B Sep 14 08:40 distutils-precedence.pth
      drwxr-xr-x  28 polo  staff   896B Sep 14 09:27 fastapi
      drwxr-xr-x   8 polo  staff   256B Sep 14 09:27 fastapi-0.68.1.dist-info
      drwxr-xr-x   8 polo  staff   256B Sep 14 08:40 pip
      drwxr-xr-x  10 polo  staff   320B Sep 14 08:40 pip-21.1.1.dist-info
      drwxr-xr-x http://www.cppcns.com  7 polo  staff   224B Sep 14 08:40 pkg_www.cppcns.comresources
      drwxr-xr-x  53 polo  staff   1.7K Sep 14 09:27 pydantic
      drwxr-xr-x   9 polo  staff   288B Sep 14 09:27 pydantic-1.8.2.dist-info
      drwxr-xr-x  41 polo  staff   1.3K Sep 14 08:40 setuptools
      drwxr-xr-x  11 polo  staff   352B Sep 14 08:40 setuptools-56.0.0.dist-info
      drwxr-xr-x  27 polo  staff   864B Sep 14 09:27 starlette
      drwxr-xr-x   8 polo  sgVmzGlitaff   256B Sep 14 09:27 starlette-0.14.2.dist-info
      drwxr-xr-x   8 polo  staff   256B Sep 14 09:27 typing_extensions-3.10.0.2.dist-info
      -rw-r--r--编程客栈   1 polo  staff   107K Sep 14 09:27 typing_extensions.py

      从虚拟环境生成 requirement.txt

      先看看有哪些包

      > pip list
      Package           Version
      ----------------- --------
      fastapi           0.68.1
      pip               21.1.1
      pydantic          1.8.2
      setuptools        56.0.0
      starlette         0.14.2
      typing-extensions 3.10.0.2

      pip freeze

      在激活虚拟环境下敲

      pip freeze > requirement.txt  
      

      Python 虚拟环境venv详解

      这样生成的 requirement.txt 文件就只包含虚拟环境中已安装的依赖包了!

      包管理利器 popety

      TODO

      到此这篇关于Python 虚拟环境venv详解的文章就介绍到这了,更多相关Python 虚拟环境venv内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号