Python的开发环境
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
待更新
总结
待更新
参考资料
- venv-Python 标准库
- What is python's site-packages directory?
- python多环境管理(venv与virtualenv)
- pyenv
- pyenv-virtualenv
- 和 PyPA 的成员聊聊 Python 开发工作流-捕蛇者说
Python的开发环境的更多相关文章
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- Python虚拟开发环境
最近,一直在不同版本的Python之间来回折腾,发现了几个Python虚拟开发环境工具,具体如下: 1. Virtualenv,可以指定开发环境的Python版本.继承已有开发环境配置,virtual ...
- [转]virtualenv建立多个Python独立开发环境
不同的人喜欢用不同的方式建立各自的开发环境,但在几乎所有的编程社区,总有一个(或一个以上)开发环境让人更容易接受. 使用不同的开发环境虽然没有什么错误,但有些环境设置更容易进行便利的测试,并做一些重复 ...
- 西秦的ACE-Python教程 一、Python本地开发环境部署
西秦的ACE-Python教程 一.Python本地开发环境部署 西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信 只看楼主 更多操作楼主 发表于: 10-10 ...
- 在windows下用eclipse + pydev插件来配置python的开发环境
在windows下用eclipse + pydev插件来配置python的开发环境 一.安装 python 可以到网上下个Windows版的python,官网为:https://www.python. ...
- centos6.5下Python IDE开发环境搭建
自由不是想做什么就做什么,而是想不做什么就不做什么. ---摘抄于2016/11/30晚 之前学习了一段时间的Python,但所有部署都在windows上.正赶上最近在学习liux,以后 ...
- Python GUI开发环境的搭建
原文:Python GUI开发环境的搭建 最近对Python的开发又来了兴趣,对于Python的开发一直停留在一个表面层的认识,玩的部分比较大. Python的入手简单,语法让人爱不释手,在网络通信方 ...
- Python集成开发环境(Eclipse+Pydev)
刚開始学习python,就用Editplus, Notepad++来写小程序, 后来接触了Sublime Text2.认为很不错,没事写写代码.就用编辑器Sublime Text2,最好再配搭一个ap ...
随机推荐
- 【LeetCode】813. Largest Sum of Averages 解题报告(Python)
[LeetCode]813. Largest Sum of Averages 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...
- LeetCode118. Pascal's Triangle 杨辉三角
题目 给定行数,生成对应的杨辉三角 思考 同一行是对称的,最大的下标为(行数+1)/2;1,1,2,3,6;下标从0开始,则对应分别为0.0.1.1.2.2 对于第偶数行,个数也是偶数,对于奇数行,个 ...
- CS5213设计HDMI转VGA带音频信号输出|CS5213方案|CS5213设计电路
CS5213是一款用于设计HDMI转VGA音视频信号转换器方案,CS5213设计HDMI转VGA转换器或者转接线产品特点: 将完整的HDMI信号转换为VGA输出支持数字信号到模似信号的转换支持 HDC ...
- 使用 Eclipse 创建一个静态的登录页面
要求: 使用 Eclipse 创建一个静态的登录页面 实现步骤: 在 Eclipse 中,点击"File",显示菜单,选择"New" "Other&q ...
- 使用 JavaScript 用循环嵌套输出乘法表。外循环控制行数,内循环控制当前行要输出的乘法表达式,在页面上输出九九乘法表
查看本章节 查看作业目录 需求说明: 在页面上输出九九乘法表,实现效果如图所示 实现思路: 创建HTML页面 在页面中嵌入 <script type="text/javascript& ...
- GeoWave实践2:使用命令行将本地矢量数据注入hbase并发布至GeoServer
目录 步骤 补充 步骤 在GeoWave所在的节点打开两个会话窗口. 会话1 //运行GeoServer,默认端口8080 geowave gs run 会话2 //为GeoWave创建数据库Test ...
- 『无为则无心』Python函数 — 33、高阶函数
目录 1.高阶函数的定义 2.体验高阶函数 3.内置高阶函数 (1)map()函数 (2)reduce()函数 (3)filter()函数 1.高阶函数的定义 把函数作为参数传入(把一个函数作为另外一 ...
- org.reflections 接口通过反射获取实现类源码研究
org.reflections 接口通过反射获取实现类源码研究 版本 org.reflections reflections 0.9.12 Reflections通过扫描classpath,索引元数据 ...
- linux7,一台物理机上使用VM装多个虚拟机,始终只有一个虚拟机网络正常,其他虚拟机报错Error: Connection activation failed: No suitable device found for this connection.
今天在VM新装了一个虚拟机,结果发现原来的虚拟机连不上了,重启网络服务后报错 Error: Connection activation failed: No suitable device found ...
- python中多模块导入的注意点
导入模块常见的方式有 import xxx ,from xxx import yyy 或者 from xxx import yyy as a(为导入包(方法)取别名主要用于防止包名与模块中的变量重 ...