利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项目B依赖包相互独立,互不干扰。为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离。要想安装多个Python版本,可以利用pyenv这个好用的工具,对于建立多个项目之间隔离的开发环境,可以借助于pipenv这个更加好用的包管理工具。
这篇文章将给大家介绍如何利用pyenv和pipenv来管理我们的python开发环境,主要讲两个核心内容:
- 如何在同一台电脑上管理多个版本Python;
- 为每一个项目建立相互隔绝的虚拟环境。
01 — 安装多个Python版本
我们自己开发的多个项目或者从github上clone的项目,可能依赖不同的Python解释器。因此,我们要想运行这些项目,在工作电脑上就要安装不同版本的Python。
pyenv是Python版本管理工具,利用它可以在同一台电脑上安装多个版本的Python,这个过程非常简单。
1.1、安装或升级pyenv
首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。
$ brew update && brew install pyenv
$ brew update && brew upgrade pyenv
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL"
这种安装方式的详细说明,还是建议大家参考官方文档:https://github.com/pyenv/pyenv#basic-github-checkout。
$ cd $(pyenv root)
$ git fetch
$ git tag
v1.2.18
$ git checkout v1.2.18
pyenv安装完成后,需要将$(pyenv root)/shims添加到PATH变量前面,这一步非常关键。
$ echo 'export PATH="$(pyenv root)/shims:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv install 3.7.7
$ pyenv rehash
$ pyenv versionssystem
* 3.7.7 (set by /Users/chunming.liu/.pyenv/version)
可以看到,已经成功安装了Python 3.7.7,安装的位置在/Users/chunming.liu/.pyenv。
1.3、切换Python版本
可以通过pyenv global或者pyenv local切换Python版本。pyenv global属于全局切换,切换完成后,在系统中任何地方执行python,你会发现都是同样的Python版本。
$ pyenv global 3.7.7
$ pyenv versionssystem
* 3.7.7 (set by /Users/chunming.liu/.pyenv/version)
$ python
Python 3.7.7 (default, Apr 12 2020, 12:31:11)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
pyenv local属于局部切换,只能修改当前目录下的Python版本,出了当前目录则失效。
02 — 用Pipenv创建虚拟环境
如果你是Mac电脑,那么推荐使用Homebrew来安装和升级pipenv:
$ brew update && brew install pipenv
$ brew update && brew upgrade pipenv
$ pip install pipenv
$ pip install --upgrade pipenv
$ mkdir pipenv_demo
$ cd pipenv_demo
$ pipenv --python 3.7.7
Creating a virtualenv for this project…
Pipfile: /Users/chunming.liu/work/pipenv_demo/Pipfile
Using /Users/chunming.liu/.pyenv/versions/3.7.7/bin/python3 (3.7.7) to create virtualenv…
⠙ Creating virtual environment...Using base prefix '/Users/chunming.liu/.pyenv/versions/3.7.7'
New python executable in /Users/chunming.liu/.local/share/virtualenvs/pipenv_demo-RYMSREda/bin/python3
Also creating executable in /Users/chunming.liu/.local/share/virtualenvs/pipenv_demo-RYMSREda/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /Users/chunming.liu/.pyenv/versions/3.7.7/bin/python3
✔ Successfully created virtual environment!
Virtualenv location: /Users/chunming.liu/.local/share/virtualenvs/pipenv_demo-RYMSREda
默认地,虚拟环境会创建在~/.local/share/virtualenvs目录里面。我们也可以通过pipenv --venv查看项目的虚拟环境目录。可以通过 pipenv --rm 删除虚拟环境。
$ echo 'export WORKON_HOME=~/.venvs' >> ~/.bash_profile
$ source ~/.bash_profile
如果希望在项目目录下创建虚拟环境目录(.venv),需要在 .bashrc 或 .bash_profile 中配置环境变量PIPENV_VENV_IN_PROJECT:
$ echo 'export PIPENV_VENV_IN_PROJECT=1' >> ~/.bash_profile
$ source ~/.bash_profile
03 — 用Pipenv管理依赖包
3.1 安装依赖包
为项目安装依赖包到虚拟环境中,使每个项目拥有相互独立的依赖包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中的方法:
$ pipenv install pytest Installing pytest… Adding pytest to Pipfile's [packages]… ✔ Installation Succeeded Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… ✔ Success! Updated Pipfile.lock (1c4d3d)! Installing dependencies from Pipfile.lock (1c4d3d)…
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境相关推荐
- 利用VMware搭建虚拟开发环境及VMware虚拟机上网
局域网xp系统,VMware装linux 9, 局域网 xp自动获取IP:59.64.157.90, 启用 VMware Network AdapterVMnet8.设 IP: 59.64,157.2 ...
- 【Python配置】使用pyenv与virtualenv搭建单机多版本python多虚拟环境开发
用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境 pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法. virtualenv则提供 ...
- Django实战1-权限管理功能实现-01:搭建开发环境
1 项目开发环境 语言环境: python3.6.2 , django-2.1.2 数据库环境:sqlite3(开发环境使用,部署环境使用mysql5.6) 开发工具:pycharm 2 安装pyth ...
- 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境
使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境 使用IntelliJ IDEA和Maven管理搭建+Web+Tomcat开发环境 前言:原来一直使用Eclipse,换 ...
- 属性与内存管理(属性与内存管理都是相互关联的)
<span style="font-size:18px;"> 属性与内存管理(属性与内存管理都是相互关联的)第一部分一,属性:属性是OC2.0之后出来的新语法,用来取代 ...
- 使用pipenv代替virtualenv管理python包
前言 第一次接触到 pipenv 是因为看到@董明伟大神的<使用pipenv管理你的项目>,之前可能和大家的选择类似使用 virtualenv 或者 pyenv 来管理 python 的包 ...
- 群晖NAS教程(十六)、利用Docker安装GitLab管理代码工具
为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客 群晖NAS教程(十六).利用Docker安装GitLab管理代码工具 群晖DSM上安装GitLab有两种方式,一种是直接在群晖套件上安装,另一种是 ...
- 利用xmind进行日程管理
利用xmind进行日程管理 最近项目比较多,用Microsoft todo有点繁琐.为了找到单纯美观的日常管理软件,发现 xmind 符合要求. 以日期为中心节点,在前一天晚上的代办文件基础上,把第二 ...
- beego利用casbin进行权限管理——第二节 策略存储
beego利用casbin进行权限管理--第一节 起步.测试 beego利用casbin进行权限管理--第二节 策略存储 beego利用casbin进行权限管理--第三节 策略查询 beego利用ca ...
最新文章
- java 指令级别理解i++和++i
- python修饰符用法_c#教程之C#语言中的修饰符汇总
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛G 又是一个小游戏(蓝)...
- 圣诞节吃饺子时,怎么给女票解释啥是AI?
- 【整理】更改MSSQL默认字符集
- yarn logs -applicationId 无法导出logs日志 Log aggregation has not completed or is not enabled.
- 2014蓝桥杯:地宫取宝(DFS详解)
- 会员制营销系统_想提升门店经营水平?会员制营销法可以帮到你
- ArcGIS批量使用以表格显示分区统计工具
- GetWindowRect,GetClientRect,ScreenToClient MoveWindow SetWindowPos 用法说明
- Oracle ERP 仓库(inventory) 词汇
- [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码
- linux 是什么?
- 地图省界线什么样_地图上省份的划分精细复杂,为何分得这么细致?原来有这么多学问...
- SkyWalking8.4监控跨线程问题解决
- 分类数据cotegory介绍以及常用API的属性和方法
- 《数据结构学习笔记》-持续记录
- 如何在小米9 se(安卓9)安装Xposed框架?
- 用vfp实现断点续传
- 在MATLAB中调用 Python
热门文章
- 保姆级Red Hat没有yum命令、报错This system is not registered to Red Hat Subscription Management.
- 数图互通房产管理系统怎么样?
- ws协议与http协议
- python mysql 编码问题
- java 树的各种遍历
- html中mark标记,html5 mark标签是什么意思?html5 mark标签的作用又是什么?
- 虚拟机网络发生错误,需要运行NetworkManager
- 神经网络游戏场05:神经网络 nn.ts - 节点+激活函数
- 区块链媒体宣发的注意事项
- 移动办公oa管理软件的选择指标是什么?