搭建Python开发环境(Mac)
准备
Python官网:
Python官方文档:
环境搭建
简介
pipenv
是Python官方推荐的包管理工具。可以说,它集成了virtualenv
, pip
和pyenv
三者的功能。其目的旨在集合了所有的包管理工具的长处,如: npm
, yarn
, composer
等的优点。
它能够自动为项目创建和管理虚拟环境,从Pipfile
文件添加或删除安装的包,同时生成Pipfile.lock
来锁定安装包的版本和依赖信息,避免构建错误。
pipenv
主要解决了如下问题:
- 不用再单独使用
pip
和virtualenv
, 现在它们合并在一起了 - 不用再维护
requirements.txt
, 使用Pipfile
和Pipfile.lock
来代替 - 可以使用多个python版本(
python2
和python3
) - 在安装了
pyenv
的条件下,可以自动安装需要的Python版本
准备
1、pyenv是什么?
pyenv是Python版本管理工具,利用它我们可以在同一台电脑上安装多个版本的Python,这个过程非常简单。
2、 pipenv是什么?
pipenv是Python官方推荐的包管理工具,用来管理安装包的。类似于npm包。
3、利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境。
1. 安装pyenv—用来安装多个Python版本
1.1、安装或升级pyenv
首先安装pyenv,如果你是Mac电脑,那么推荐使用Homebrew来安装。
brew update
brew install pyenv
1.2、用pyenv安装Python
安装完pyenv,安装Python就简单了。我电脑上系统自带的是Python2.7.10,我准备再安装一个Python2.7.14和Python3.6.4,以后开发时候就用自己安装的Python2.7.14或者Python3.6.4了。
pyenv install 3.6.4 2.7.24
pyenv rehash
执行命令pyenv versions,如果输出结果如下,那么说明我们已经安装好了Python2.7.14和Python3.6.4:
pyenv versions
system
* 2.7.14
* 3.6.4
现在我们就可使用Python2.7.14和Python3.6.4了。执行这个下面python2、python3、python指令可以进入到不同版本的Python环境。
pyenv global属于全局切换,pyenv local属于局部切换,局部切换只在所在切换时的目录中生效。可以通过如下命令来切换版本:
$: pyenv global 3.6.4
$: pyenv versions
system
2.7.14
* 3.6.4 (set by /Users/chunming.liu/.pyenv/version)
pyenv local 2.7.14
重要事情说三遍:
不过有了pipenv,我们不用手动切换Python版本了,也就是安装完了pyenv之后不用再去安装具体的Python版本了。
注意:
add --enable-shared for pyenv python installations
https://github.com/pyenv/pyenv/wiki#how-to-build-cpython-with---enable-shared
2. 安装pyenv---用来安装相互独立的虚拟环境
2.1、安装pipenv
如果你是Mac电脑,那么推荐使用Homebrew来安装。
brew install pipenv
执行pipenv,可以查看pipenv的帮助信息。
2.2、为项目建立虚拟环境
默认地,虚拟环境会创建在~/.local/share/virtualenvs目录里面。
如果我们希望在每个项目的根目录下保存虚拟环境目录(.venv),需要在 .bashrc 或 .bash_profile 中配置如下:
export PIPENV_VENV_IN_PROJECT=1
要想使配置生效,执行下source ~/.bashrc或者source ~/.bash_profile。
接下来我们为项目创建虚拟环境。
mkdir pipenv_demo
cd pipenv_demo
pipenv --three # 初始化一个python3虚拟环境
pipenv --two # 初始化一个python3虚拟环境
创建完虚拟环境之后,在pipenv_demo目录下将会看到一个.venv的目录,这个目录就是pipenv_demo项目的虚拟环境。
使用具体的python版本创建虚拟环境,可以执行:
pipenv --python 2.7.14
指定版本
pyenv versions
* system (set by /Users/lucas/.pyenv/version)
3.8.1
$ pipenv --rm
$ pipenv install
$ Creating a virtualenv for this project…3.8.1
2.3、为项目安装第三方依赖包
为项目安装自己的依赖包到虚拟环境中,使每个项目拥有相互独立的第三方包,是非常不错的Python的开发实践。安装依赖包到虚拟环境中:
pipenv install flask
pipenv install pytest --dev # 用于区分需要部署到线上的开发包、只需要在测试环境中执行的包
执行完上面的命令后,检查一下是否安装成功:
$ pipenv graph
Flask==0.12.2
- click [required: >=2.0, installed: 6.7]
- itsdangerous [required: >=0.21, installed: 0.24]
- Jinja2 [required: >=2.4, installed: 2.10]
- MarkupSafe [required: >=0.23, installed: 1.0]
- Werkzeug [required: >=0.7, installed: 0.14.1]
pytest==3.4.2
- attrs [required: >=17.2.0, installed: 17.4.0]
- pluggy [required: >=0.5,<0.7, installed: 0.6.0]
- py [required: >=1.5.0, installed: 1.5.2]
- setuptools [required: Any, installed: 38.6.0]
- six [required: >=1.10.0, installed: 1.11.0]
2.4 更新 pypi源来提高依赖库安装的速度
在使用pipenv的时候,常常会在安装的时候,一直卡在了 Locking 这里,通过加上 -v 参数,可以看到安装过程中的步骤信息,卡在了下载那里,这时应该可以意识到是因为网络的原因,pipenv创建的 Pipfile 中默认的pypi源是python官方的 https://pypi.python.org/simple。我们国内用户访问下载的时候会很慢。
所以,我一般会在创建好Pipfile以后,修改到文件中 source 块下的 url 字段,设置为国内的 pypi 源就好了,我推荐的是清华的pypi源或者阿里源,具体设置如下:
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
3、使用虚拟环境进行开发
虚拟环境创建好了之后,就可以在里面进行开发了。
如果在命令行下开发,则在项目目录下执行pipenv shell,就进入到了虚拟环境中,在这个环境中,就已经包含安装过的所有第三方依赖包了,接下来就可以利用这些第三方包进行开发工作了。
如果是用Pycharm进行开发,就更简单了,直接用Pycharm打开项目目录就好了,打开后可以从Pycharm中的左侧导航栏里面看到External Libraries里面显示的是虚拟环境中的Python解释器。
4、删除安装的第三方包
如果是要删除虚拟环境中的第三方包,执行
pipenv uninstall flask
5、安装项目所有的依赖
用git管理项目时候,要把Pipfile和Pipfile.lock加入版本跟踪。这样clone了这个项目的同学,只需要执行
pipenv install
就可以安装所有的Pipfile中 [packages]部分的包了,并且自动为项目在自己电脑上创建了虚拟环境。
如果是想要安装[dev-packages]部分的包,需要执行:
pipenv install -d
上面的方法都是安装Pipfile中列出来的第三方包的最新版本,如果是想安装Pipfile.lock中固定版本的第三方依赖包,需要执行:
pipenv install --ignore-pipfile
如果你的项目之前使用requirements.txt来管理依赖的,那么使用pipenv安装所有依赖可以采用类似pip的方法:
pipenv install -r path/to/requirements.txt
6、团队实践建议
建议团队内开发人员,在自己电脑上都安装pyenv和pipenv。Pipfile和Pipfile.lock加入版本跟踪,.venv不要加入版本管理。为自己的每一个项目建立独立的虚拟环境。
7、扩展命令(了解下就好)
- 查看虚拟环境python解释器所在位置
pipenv --py
- 查看虚拟环境所在位置
pipenv --venv
- 使用更底层的命令
pip freeze
pipenv run pip freeze
- 只在安装开发阶段使用的软件包(和npm类似)
pipenv install pytest --dev
- 安装Pipfile.lock的所有包(完整移植开发环境)
pipenv sync
参考链接:https://blog.csdn.net/liuchunming033/article/details/79582617
https://blog.windrunner.me/python/pip.html#pip-与-pipfile
搭建Python开发环境(Mac)的更多相关文章
- Eclipse Kepler SR2 + Python 3.4 + JDK7+Pydev3.4 搭建 python 开发环境(MAC)
Eclipse Kepler SR2 + Python 3.4 + JDK7+Pydev3.4 搭建 python 开发环境(MAC) 此为mac开发环境 一:下载所需软件: Eclipse Kepl ...
- Python3笔记002 - 1.2 搭建python开发环境
第1章 认识python 1.2 搭建python开发环境 1.2.1 python开发环境概述 python开发环境常见的操作系统: Windows Mac OS Linux 1.2.2 安装pyt ...
- 【转】使用Eclipse搭建Python开发环境
因为要进行自动化测试,所以要搭建Python开发环境.这里将使用Eclipse+pyDev进行搭建,在此作为笔记记录下来. 需要的组件: 1.Eclipse SDK 3.7(这里将不再叙述Eclips ...
- visual studio 2015 搭建python开发环境,python入门到精通[三]
在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...
- Windows搭建python开发环境,python入门到精通[一]
从大学开始玩python到现在参加工作,已经有5年了,现在的公司是一家.net的公司用到python的比较少,最近公司有新项目需要用到python,领导希望我来跟其他同事training,就有了这篇博 ...
- Ubuntu系统下搭建Python开发环境
之前演示了在Windows中安装Pycharm,很简单.下面介绍一下如何在Ubuntu中安装Pycharm 1.更新Python至3.5.1,执行以下命令: sudo add-apt-reposito ...
- Eclipse和PyDev搭建python开发环境
Eclipse和PyDev搭建python开发环境 1.1整体目标 本文档作为python学习者的新手教程,通过本教程能够了解python用途.语法.在实际工作中的应 ...
- [转]在Eclipse中搭建Python开发环境
在Eclipse中搭建Python开发环境 来自: http://hi.baidu.com/hqwfreefly/blog/item/2543181d0afd9604314e150e.html 前言 ...
- Windows搭建python开发环境
python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...
随机推荐
- python3-cookbook笔记:第三章 数字日期和时间
python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...
- Codeforces Round #592 (Div. 2) E
给你一个数组,你最多可以进行k次操作,每次操作可以使一个数+1或者-1,问操作之后数组的极差最小可能是多少 利用map来模拟移动,可以观察到每次应该选择数量少的一组数让他们进行移动是最优的 int m ...
- UVA10791-Minimum Sum LCM(唯一分解定理基本应用)
原题:https://vjudge.net/problem/UVA-10791 基本思路:1.借助唯一分解定理分解数据.2.求和输出 知识点:1.筛法得素数 2.唯一分解定理模板代码 3.数论分析-唯 ...
- 0级搭建类003-CentOS Linux安装 (CentOS 7)公开
项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列目前不对外发布,仅作为博客记录.如学员在实际工作过程中需提前 ...
- laravle中常见的数据库加密
// 1.md5加密 $str=md5('123456'); // 2.base64_decode加密 $str2=base64_encode('123456'); // 2.1 base64_解密 ...
- 二叉堆(1)BinaryHeap
封装一个简单二叉堆,亦可视为优先队列. 测试文件 main.cpp: #include <iostream> #include "BinaryHeap.h" using ...
- 小程序y轴拖动
需求场景 小程序在y轴方向 拖动 一小段距离 解决方案 1.监听 元素 2.绑定 点击 和 移动 事件 3.数据处理 代码 <view animation="{{item.animat ...
- Quick Sort(快速排序)
Quick Sort Let's arrange a deck of cards. Your task is to sort totally n cards. A card consists of a ...
- AC认证技术
一.认证方式 Dkey认证(数字密钥认证) 1)免认证key,形同usb,插入即通过认证 2)免审计key,也是上网不被记录审计. 单点登录 登录了某点,其他点都能访问:例如登录了支付宝淘宝就不用登录 ...
- centos8 apache+mysql+php
apache安装 dnf install httpd httpd-tools 开机启动 systemctl enable httpd 立即启动 systemctl start httpd 查看状态 s ...