【Python-虚拟环境】项目的启动,从隔离开发环境开始

在实际项目开发中,通常会根据自己的需求去下载各种相应的框架或库。

但是,每个项目使用的框架或库并不一样,甚至版本也不一样。这样如果直接在 Python环境中安装各种各样的库,就会造成开发环境的混乱,引起很多不必要的麻烦。

因此,这种情况就需要虚拟环境来进行开发环境的隔离,没一个虚拟环境对应一个项目,方便管理。

路漫漫兮其修远兮,吾将上下而求索!

Python创建虚拟环境的方式有很多总,包括: venvvirtualenvcondapipenvpoetry等。

说明:

  • venvPython3.5+自带,官方文档
  • virtualenvpipenv:通过 pip安装
  • conda官网下载,安装
  • poetry:安装方法参考官网,也可通过 pip安装

2.1 poetrypipenv

poetrypipenv,这两个类似,是 Python虚拟环境和依赖管理工具; poetry还提供了包管理功能,比如打包和发布。

2.2 venvvirtualenv

poetrypipenv,这两个类似,操作方式对新手来说更容易上手。

2.3 Anaconda

Anaconda 提供了在单台机器上执行 Python/R 数据科学和机器学习的最简单方法。立即开始使用数以千计的开源包和库。(官网介绍)

因此,对于数据科学和机器学习的环境来说,可以优先选择 Anaconda

以下内容主要介绍我用过的 poetryvenvvirtualenv

2.1 更好的选择: poetry (推荐)

官方推荐安装方法:

  • Linux/MacOS
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
  • Windows
PowerShell
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -

安装完成后,查看(终端): poetry -V

初始化,在当前目录(项目根目录)创建 pyproject.toml 文件
poetry init

查看当前所使用的环境
poetry env info

指定使用 python(如果不指定,将使用环境变量的python;可不指定)
poetry env use /path/python

添加依赖
poetry add package
poetry add package@^3.2.13
poetry add package -D # 开发依赖
poetry add package --optional # 可选依赖

更新依赖(非必要,一般不使用)
poetry update
poetry update package

如果手动修改了 pyproject.toml 中依赖,需要更新lock文件
poetry lock

进入虚拟环境
poetry shell

不进入虚拟环境也可进行操作
poetry run python manage.py runserver

2.2 最简单的操作: venv & virtualenv

创建虚拟环境
python -m venv venv

进入虚拟环境
Windows
venv\Scripts\activate
Linux/MacOS
source venv/bin/activate

安装依赖
pip install package
pip install package==3.2.13

退出虚拟环境
Windows
venv\Scripts\deactivate
Linux/MacOS
deactivate

在使用PyCharm时,也可使用 virtualenv创建虚拟环境,操作简单。

软件工具栏:File – Settings – Project – Python Interpreter – 设置按钮() – Add。

在添加Python虚拟环境(Add Python Interpreter)时,需要设置的仅有 Location(虚拟环境存放的目录,一般是项目根目录), Base interpreter(选择Python解释器,找到Python的安装目录,默认使用环境变量中的Python)

早期在使用 PyCharm时,一直用的是通过(PyCharm) virtualenv创建的虚拟环境;项目部署时使用的是 venv创建的虚拟环境。

以上方案整体上说,用起来还是很方便的,但是会存在一些问题。

  • 安装依赖的版本不固定,对于存在依赖大版本更新的情况下,项目可能会无法正常运行。
  • 开发环境与生产环境的依赖区分问题。之前使用 base.txtdev.txtprod.txt对依赖进行区分。
  • 如果使用 pip freeze会导出很多附属依赖,造成文件的不可读。

使用 poetry之后,以上问题都很好的得到了解决。并且还包含了打包和发布功能。

虚拟环境的使用,是项目开发的基础,使用哪种虚拟环境,可以根据自己的实际情况进行选择。

最近有了解到一个新的包管理工具PDM(Python Development Manager),据说是一个更厉害的工具,并且这是一个国人开发的工具。

之后有时间会对这个工具的使用做一个了解,这应该是一个很好的工具。

有兴趣的朋友们,也可以尝试尝试这个工具。

Original: https://www.cnblogs.com/CoderChaos/p/16348148.html
Author: CoderChaos
Title: 【Python-虚拟环境】项目的启动,从隔离开发环境开始

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/713226/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Golang】golang实现sha256加密函数

    golang实现sha256加密函数 //Sha256加密 func Sha256(src string) string { m := sha256.New() m.Write([…

    技术杂谈 2023年6月1日
    090
  • 安装cuda和cudnn

    原来机器上有安装一个cuda 10.0,想要再安装一个cuda 10.1 安装CUDA 1.首先下载.run文件 https://developer.nvidia.com/cuda…

    技术杂谈 2023年6月1日
    072
  • 罗德岛

    自从转行以后就建博了,一直没有动手写内容,今天开始写。 主要记录技术上的积累和项目上的工作感悟。 这里就是罗德岛,就在这里跳。 Original: https://www.cnbl…

    技术杂谈 2023年6月21日
    079
  • CAIL2021-阅读理解任务-top3-数据预处理模块

    class SquadExample(object): """ A single training/test example for the Squa…

    技术杂谈 2023年6月1日
    0123
  • 强大的命令行工具wmic

    1.wmic=Microsoft Windows Management Instrumentation C:\WINDOWS\system32\wbem 下的东西,特别是.xsl格…

    技术杂谈 2023年6月1日
    067
  • 008 Linux 文件查找 find

    在 Linux 系统,find 毫无疑问是最强的文件查找工具。find 一般会与其他命令结合,将查找到的结果作为参数传入到后置命令中,进行删除、统计、复制迁移等操作。 find /…

    技术杂谈 2023年7月10日
    068
  • Win10系统的SurfacePro4的触摸笔如何使用

    初次使用需要配对,微软的触摸笔是蓝牙配对的,打开平板的蓝牙,长按触摸笔后面的按钮,触摸笔会闪烁小灯,平板会提示配对准备已就绪 点击配对之后,提示已连接 可以按下触摸笔后面的按钮,一…

    技术杂谈 2023年5月31日
    084
  • 腾讯社会招聘内推(长期有效)

    一、内推方式 扫描以下图二维码,选择自己想要投递的岗位直接投递,即可以博主名义进行内推。 如以上二维码过期可添加博主微信,寻求新的内推链接: 二、投递建议 一是工作年限/学历/证书…

    技术杂谈 2023年5月31日
    0100
  • 描述高频题之队列&栈

    栈和队列 全文概览 基础知识 栈 栈是一种先进后出的数据结构。这里有一个非常典型的例子,就是堆叠盘子。我们在放盘子的时候,只能从下往上一个一个的放;在取的时候,只能从上往下一个一个…

    技术杂谈 2023年7月25日
    066
  • Wappalyzer(chrome网站分析插件)

    Wappalyzer是一款功能强大的、且非常实用的 chrome网站技术分析插件,通过该插件能够分析目标网站所采用的平台构架、 网站环境、服务器配置环境、JavaScript框架、…

    技术杂谈 2023年5月31日
    0106
  • Jquery获取selelct选中值

    javascript;gutter:true; 误区:</p> <pre><code> 一直以为jquery获取select中option被选中…

    技术杂谈 2023年5月31日
    096
  • Linux 系统安装RocketMQ

    准备工作 1.去官网下载一个安装包 1.解压 unzip rocketmq-all-4.9.0-bin-release.zip -d /download/compress/ 2.进…

    技术杂谈 2023年7月11日
    089
  • RabbitMQ学习笔记

    什么是MQ? Message Queue,消息队列,FIFO,队列中存储的是message,是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,是一种非常常见的&#8221…

    技术杂谈 2023年7月11日
    0104
  • Sublime Text 3 中文乱码/符的解决

    本方法对Sublime Text 3211版本已验证可用。 Sublime Text3默认不支持GBK的编码格式,所以会出现乱符的现象。 解决方法如下: 安装Package Con…

    技术杂谈 2023年5月31日
    086
  • 进程内存分布

    来自:https://www.bilibili.com/video/BV1mK4y1H7JL/ Original: https://www.cnblogs.com/qiumingc…

    技术杂谈 2023年6月1日
    085
  • 这才是使用ps命令的正确姿势

    这才是使用ps命令的正确姿势 前言 在linux系统当中我们通常会使用命令去查看一些系统的进程信息,我们最常使用的就是 ps (process status)。ps 命令主要是用于…

    技术杂谈 2023年7月23日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球