我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项目B依赖包相互独立,互不干扰。为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离。要想安装多个Python版本,可以利用pyenv这个好用的工具,对于建立多个项目之间隔离的开发环境,可以借助于pipenv这个更加好用的包管理工具。

这篇文章将给大家介绍如何利用pyenv和pipenv来管理我们的python开发环境,主要讲两个核心内容:

  1. 如何在同一台电脑上管理多个版本Python;
  2. 为每一个项目建立相互隔绝的虚拟环境。

25.1 安装多个Python版本

我们自己开发的多个项目或者从github上clone的项目,可能依赖不同的Python解释器。因此,我们要想运行这些项目,在工作电脑上就要安装不同版本的Python。

pyenv是Python版本管理工具,利用它可以在同一台电脑上安装多个版本的Python,这个过程非常简单。

25.1.1 安装或升级pyenv

首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。

$ brew update && brew install pyenv

要想升级pyenv,则可以执行:

$ brew update && brew upgrade pyenv

如果不是Mac电脑,那么就用github方式来安装:

$ 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。

对于github安装的pyenv,可以按下面方式进行升级:

$ 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

25.1.2 用pyenv安装Python

安装完pyenv,可以安装Python啦,一共需要两步。

$ pyenv install 3.7.7
$ pyenv rehash

执行命令pyenv versions查看安装结果。

$ pyenv versionssystem
* 3.7.7 (set by /Users/chunming.liu/.pyenv/version)

可以看到,已经成功安装了Python 3.7.7,安装的位置在/Users/chunming.liu/.pyenv。

25.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)

可以看到,3.7.7前面有一个星号,说明成功切换到了3.7.7版本,可以执行一下python来验证一下:

$ 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版本,出了当前目录则失效。

接下来,开始为每个项目建立独立的开发环境。

25.2 为项目创建虚拟环境

Pipenv是Python官方推荐的包管理工具。它综合了 virtualenv , pip 和 pyenv 三者的功能。你可以使用pipenv这一个工具来安装、卸载、跟踪和记录依赖性,并创建、使用和组织你的虚拟环境。

25.2.1 安装和升级pipenv

如果你是Mac电脑,那么推荐使用Homebrew来安装和升级pipenv:

$ brew update && brew install pipenv
$ brew update && brew upgrade pipenv

也可以通过pip来安装和升级pipenv:

$ pip install pipenv
$ pip install --upgrade pipenv

25.2.2 为项目建立虚拟环境

进入到项目目录中,通过下面的指令为项目创建虚拟环境。

$ 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

上面的操作,给pipenv_demo这个项目初始化了一个Python 3.7.7的虚拟环境,并在项目录下生成一个项目依赖包文件Pipefile。如果系统中没有3.7.7版本的Python,pipenv会调用pyenv来安装对应的Python的版本。

默认地,虚拟环境会创建在~/.local/share/virtualenvs目录里面。我们也可以通过pipenv --venv查看项目的虚拟环境目录。可以通过 pipenv --rm 删除虚拟环境。

如果想更改虚拟环境的目录,可以在 .bashrc 或 .bash_profile 中,设置环境变量WORKON_HOME,指定虚拟环境的目录所在位置,比如想将虚拟环境放到~/.venvs目录,则可以执行下面的命令。

$ 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

25.2.3 管理依赖包

pipenv使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息。相比pip需要手动维护requirements.txt 中的安装包和版本,具有很大的进步。

  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)…												

【Python全栈测试开发实战1】搭建测试开发环境相关推荐

  1. python ai应用开发_AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 联系我们 OpenmindChina@microsoft.com 零.前提条件 一台能联网的电脑,使用macOS操作系统 请确保鼠标.键盘.显示器 ...

  2. Python全栈工程师之从网页搭建入门到Flask全栈项目实战(3) - 入门Flask微框架

  3. 最新python全栈3期高级开发工程师 独家完整版

    课程目录: │   ├─1-10 │  │   │  ├─day01 │  │      01 python全栈s3 day1 计算机发展史.mp4 │  │      02 python全栈s3 d ...

  4. 2018 python全栈3期高级开发工程师 独家完整版

    课程目录: │ ├─1-10 │ │ │ ├─day01 │ │ 01 python全栈s3 day1 计算机发展史.mp4 │ │ 02 python全栈s3 day1 计算机系统.mp4 │ │ ...

  5. PythonStock(38)全栈股票系统:Python全栈股票系统,使用vue进行前端界面开发,修改接口可以展示股票数据,持续开发中。

    目录 前言 0,关于Python全栈股票系统2.0,github,5.8K星星 1,Python全栈股票系统,更改使用elementUI开发 2,使用vue-element-admin,进行开发 3, ...

  6. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  7. Python全栈开发(一)——环境搭建和入门

    今天是2023年的第一天,接下来的一个月里,我将持续更新关于python全栈开发的相关知识,前面一段时间都是基础语法.主要分成四大块:基础.面向对象.MYSQL数据库.Django框架.话不多说,进入 ...

  8. python全栈测试开发_python全栈的基础知识

    python全栈是什么意思 即从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发. 全栈只是个概念,也分很多种类真正的全栈工程师涵盖了web开发 ...

  9. Python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程

    python高级全栈开发实战 老男孩课程S16+路飞学城项目+女神串讲 Python全栈直通车课程 Python高级全栈开发实战老男孩课程,是可以帮助同学们从零基础开始到项目开发实战的全栈课程,内容非 ...

  10. 路飞学城老男孩Python全栈开发实战鸡汤部分Alex

    需要购买路飞学城内部教材,Python全栈开发实战这本书的同学,可以看这篇博文. https://www.cnblogs.com/yigongzi/p/9370817.html 转载于:https:/ ...

最新文章

  1. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题
  2. 【原创】CGAL中,2D Arrangements学习笔记
  3. creat_caltab生成六边形标定板(黑底白点)
  4. linux大小写敏感 mysql_MySQL大小写敏感问题和命名规范
  5. Jmeter CSV 参数化/检查点/断言
  6. 腾讯云使用Python发邮件
  7. 大数据WEB阶段 使用mybatis是多值传递问题
  8. SQL Server 急救包(First Responder Kit)入门教程
  9. MBR、DBR、FAT32基础小知识
  10. 自定义View-实现简易车速器(真的够简易)
  11. ionic4 中使用 url scheme 插件 点击链接打开app
  12. 无法安装64位版本的Office,因为在您的PC上找到了以下32位程序的解决办法
  13. android 车牌输入键盘
  14. SVO2.0 安装编译
  15. 怎么用pr(Premiere)给视频添加水印
  16. H5页面调起关注微信公众号的方法
  17. 非线性规划求解_突破 | 杉数求解器COPT首发求解内点法
  18. 【RF】【元素定位】 Other element would receive the click
  19. Smartmontools硬盘检测工具
  20. photoshop 插件_使用长阴影生成器创建长阴影[Photoshop插件]

热门文章

  1. python 操作word页眉表格_Python-docx读写Word文档(插入图片、表格,设置表格样式,章节,页眉页脚)...
  2. VBox 启动虚拟机失败 - NtCreateFile
  3. 2021年福建高考成绩什么时候可以查询,2021年福建高考成绩排名及成绩公布时间什么时候出来...
  4. Kate Spade_百度百科
  5. ODrive干货 #3 ODriveTool 指令大全
  6. 奈奎斯特与香农定理_奈奎斯特定理和香农定理有什么区别?
  7. 【历史上的今天】6 月 17 日:术语“超文本”的创造者出生;Novell 首席科学家诞生;探索频道开播
  8. 知钱俱乐部 php,知钱俱乐部
  9. 【Python】正则表达式判断是否存在连续N个字母
  10. js 身份证 正则校验 大陆、香港、澳门、台湾 身份证 正则校验