Python的开发环境

在 Python 开发环境中我们能看到很多工具,如 pip 、conda 、poetry 、 virtualenv 、 venv 、 pyenv 等等。他们是什么,都有什么作用,该怎么选择,如何构建一个开发环境,在这篇文章我会尽力全面的阐明,既然全面那么很多细节就无法照顾,感兴趣可以在参考资料中进一步了解。本文将人群分为两类,一类是持保持最新策略的人,希望个人 PC 里所有软件工具都保持最新,想体验最新特性,最新优化等;另一类是持保持稳定策略的人,比如部署在生产环境,不会经常变更版本,防止出现未知依赖问题等。对于这两类人群提供不同的建议。

在 Python 开发环境中最常见任务是 Python 版本管理、虚拟环境、包管理、打包发布、安装。

各工具提供功能概览:

  • venv:提供虚拟环境。
  • virtualenv:提供虚拟环境。
  • pyenv:Python 版本管理。
  • conda:提供 Python 版本、虚拟环境、包管理、打包发布(conda)、安装。
  • poetry:虚拟环境相关、包管理、打包发布(标准)、安装。
  • pip:包管理、打包发布(标准)、安装。

若还有其他相关工具,欢迎在评论区推荐。

虚拟环境

虚拟环境包含一份独立的 Python 环境,含独立解释器与库集合(site-packages)。conda 、poetry 、 virtualenv 、 venv 、 pyenv 都有虚拟环境相关的设置。

  • venv 是 Python 标准库支持的虚拟环境创建库。

    • 缺点

      • venv 在 Python 3.5 后推荐使用。
      • 只能创建与主环境 Python 版本一致的虚拟环境。
    • 优点:无需额外下载。
    • 使用:命令行使用简单,功能简单,无法满足复杂需求,但可通过其提供的 API 来编写完成复杂需求。面向第三方虚拟环境创建者。
  • virtualenv 是 Python 第三方库,可以创建独立的虚拟环境。
    • 优点

      • 支持 Python2 和 Python3。
      • 可以为虚拟环境指定本地已有的 Python 版本。
    • 缺点
      • 不支持 Python 版本下载。
      • 依赖 Python。
  • pyenv 是一个第三方工具,可以下载并管理多个 Python 版本。支持全局切换、单项目 Python 版本指定等特性。
    • 缺点

      • 不支持虚拟环境管理,需通过 virtualenv 或 pyenv-virtualenv 来增强其功能。后者还提供管理 conda 环境功能。
      • 安装复杂。Windows 用户使用请使用 pyenv-win。Linux/Mac 用户使用 pyenv。
    • 优点:不依赖 Python。
  • conda 支持下载创建不同版本 Python 虚拟环境。
    • 缺点

      • 无法获取最新 Python 版本。
      • 安装复杂。
      • 无法与其他工具保持兼容性。往往需要其他工具来提供对 conda 的兼容性。
    • 优点
      • 使用方便
      • 基本囊括开发环境所需的所有功能。推荐新手与持保持稳定决策的用户使用。
  • poetry 并不提供虚拟环境管理相关功能,只使用虚拟环境。可以使用将虚拟环境放置项目内的方式来创建虚拟环境。poetry 定位是在单项目全面管理,所以与其他工具不太一样。

虚拟环境管理工具推荐

  • 对于持保持最新策略,推荐 pyenv+poetry。(如果只想要虚拟环境管理可以用 pyenv+pyenv-virtualenv)
  • 对于持保持稳定策略,推荐 conda。(同样推荐 poetry 用于单项目管理,conda 用于全局管理)

pyenv与conda如果想同时使用,需要再安装pyenv-virtualenv。

包管理器

pip、conda、poetry

待更新

打包发布

pip、conda、poetry

待更新

安装

pip、conda、poetry

待更新

总结

待更新

参考资料

  1. venv-Python 标准库
  2. What is python's site-packages directory?
  3. python多环境管理(venv与virtualenv)
  4. pyenv
  5. pyenv-virtualenv
  6. 和 PyPA 的成员聊聊 Python 开发工作流-捕蛇者说

Python的开发环境的更多相关文章

  1. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  2. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  3. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  4. Python虚拟开发环境

    最近,一直在不同版本的Python之间来回折腾,发现了几个Python虚拟开发环境工具,具体如下: 1. Virtualenv,可以指定开发环境的Python版本.继承已有开发环境配置,virtual ...

  5. [转]virtualenv建立多个Python独立开发环境

    不同的人喜欢用不同的方式建立各自的开发环境,但在几乎所有的编程社区,总有一个(或一个以上)开发环境让人更容易接受. 使用不同的开发环境虽然没有什么错误,但有些环境设置更容易进行便利的测试,并做一些重复 ...

  6. 西秦的ACE-Python教程 一、Python本地开发环境部署

    西秦的ACE-Python教程 一.Python本地开发环境部署       西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信   只看楼主 更多操作楼主  发表于: 10-10 ...

  7. 在windows下用eclipse + pydev插件来配置python的开发环境

    在windows下用eclipse + pydev插件来配置python的开发环境 一.安装 python 可以到网上下个Windows版的python,官网为:https://www.python. ...

  8. centos6.5下Python IDE开发环境搭建

    自由不是想做什么就做什么,而是想不做什么就不做什么.        ---摘抄于2016/11/30晚 之前学习了一段时间的Python,但所有部署都在windows上.正赶上最近在学习liux,以后 ...

  9. Python GUI开发环境的搭建

    原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...

  10. Python集成开发环境(Eclipse+Pydev)

    刚開始学习python,就用Editplus, Notepad++来写小程序, 后来接触了Sublime Text2.认为很不错,没事写写代码.就用编辑器Sublime Text2,最好再配搭一个ap ...

随机推荐

  1. 【OpenXml】Pptx的边框虚线转为WPF的边框虚线

    安装Openxml sdk 首先,我们先安装nuget的需要的有关的Openxml sdk,我们开源了解析pptx的Openxml拍平层,下面两种方式都可以安装: nuget包管理器控制台: Inst ...

  2. Git从远程仓库克隆

    首先,登陆GitHub,创建一个新的仓库,名字叫gitskills 勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个READM ...

  3. Log4j使用的方法

    一.什么是log4j Log4J是Apache的一个开放源代码的项目.通过使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的输出格 ...

  4. 【优雅代码】04-1行代码完成多线程,别再写runnable了

    [优雅代码]04-1行代码完成多线程,别再写runnable了 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮 ...

  5. iis站点下发布多个vue项目

    记录一下iis上某个域名下发布多个vue项目的过程,主要分为webpack打包前的配置和iis重定向的配置. vue打包配置: 1.在webpack 配置文件中(以vue.config.js为例),指 ...

  6. 学习git&github

    详细学习视频: 链接:https://pan.baidu.com/s/1Vub3YTo7uUUuGCJUCabBRQ 提取码:6q9x 一.git基本工作流程 我们先来理解下Git 工作区.暂存区和版 ...

  7. c# - 实体类和有参无参构造函数的具体写法

    1.前言 与Java基本一模一样,但是rider貌似没有意见生成get和set方法的指令 2.操作 (1)目录 实体源码 namespace ConsoleApp1.entity { public c ...

  8. 服务限流 -- 自定义注解基于RateLimiter实现接口限流

    1. 令牌桶限流算法 令牌桶会以一个恒定的速率向固定容量大小桶中放入令牌,当有浏览来时取走一个或者多个令牌,当发生高并发情况下拿到令牌的执行业务逻辑,没有获取到令牌的就会丢弃获取服务降级处理,提示一个 ...

  9. Kube-OVN 1.2.0发布,携手社区成员打造高性能容器网络

    Kube-OVN 1.2.0 新版本如期而至,支持 Vlan 和 OVS-DPDK 两种类型的高性能网络接口.本次发布得益于社区的壮大,感谢Intel爱尔兰开发团队与锐捷网络开发团队持续积极参与Kub ...

  10. MASA Framework - EventBus设计

    目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 概述 利用发布订阅模式来解耦不同架构层级,亦可用于解决隔离业务之间的交互 优点: 松耦合 ...