问题描述

我的Mac自带了版本为2.7.10的Python却没有用于管理依赖的pip工具。而我在使用刚开始学习Python时,从其官网下载了安装脚本安装了3.6版本的Python。脚本自动配置了环境变量,导致pip引用了3.6版本的pip3,我找遍了整个硬盘都无法找到版本2.7对应的pip

尴尬的是,目前有一份用Python2写的代码放在我面前,而我却因为无法安装依赖而无法执行它。我觉得这样的开发环境有问题,得找个方法解决它。

调研

在网上翻了一轮,看见了部分网友警告不要自己给系统自带的Python添加pip工具,原因是有可能导致系统异常。至于有何种异常我不想深究,我关注的是他们推荐使用HomeBrew管理自己的Python版本,保持系统的完整性。

解决步骤

1. 删除通过Python官网脚本安装的python3.6

由于我自己安装过Python,所以需要执行这一步。对于没有安装过的读者可以跳过这一步。

我参考了Python官房文档对脚本安装的描述。请查看这里。文档介绍了脚本会对系统做哪些改动,对应地我们把这些改动恢复即可。详细操作如下:

  1. 删除/Library/Frameworks/Python.Frameworks
  2. 删除/Application/Python 3.6
  3. 删除.bash_profile文件中导出的有关Python3.6的路径和环境变量,然后使用source ./bash_profile命令让改动生效。

使用HomewBrew安装Python2Python3

安装方法网上有很多介绍,我是参考了“MAC OSX 正確地同時安裝 PYTHON 2.7 和 PYTHON3”这篇文章。

不过我没有执行这篇文中介绍的修改环境变量顺序的步骤。我觉得这一步多余了。

经过这个步骤,HomeBrew为我管理了两个版本的Python,分别是2.7.14和3.6.4,在/usr/local/bin/目录下有相关命令。同时系统还有一个自带2.7.10版本的,放在/usr/bin目录中。

使用方法与优劣分析

以后开发过程中使用Python2的时候应该使用命令python2而不是使用python。因为,我的环境中命令python是MacOS自带的2.7.10版本。而命令python2则调用HomeBrew管理的python2.7.14,它在/usr/local/bin/目录中,是一个软链接,链接到/usr/local/Cellar/python/2.7.14_2/bin/python2中。命令python3同理。因此开发时需要区分这三者,这看起来有点别扭。

但我认为使用python2python3显式指定版本没什么坏处,多一个字符而已。

我们有必要保持系统自带的Python环境的完整性。一方面,不在这样做可能导致你使用的第三方Python库对系统的产生影响。例如:你自己安装pip工具可能出现它依赖的其他库你没有完整提供。另一方面,系统自带的Python主要是服务于那些为Mac量身定做的软件,如果你私自改动可能会导致将来你的安装的软件运行出现异常。

这种方案在对Python代码进行打包发布时也有好处。如果你是开发Python应用软件的人,你可以显式指定版本进行开发工作,只要在打包或者发布的时候为用户的环境设身处地的进行配置即可。生成的包还可以在Mac原生的Python环境下进行alpha测试,因为这个环境跟目标用户的环境应该是一致的。

本文同步博客

管理Mac的Python环境的更多相关文章

  1. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

  2. Anaconda 查看、创建、管理和使用python环境

    1. 查看Python环境 conda info --env可以看到所有python环境,前面有个‘*’的代表当前环境: 2.创建Python环境 conda create --name python ...

  3. Mac安装python 环境& pychaem

    一.文档说明 在Mac上其实自带python环境,但是很多的library安装python是2.7的版本. 验证:可以在终端Terminal中输入:python 如下图是未安装之前,但是咱们需要在自己 ...

  4. MAC上python环境搭建

    mac自带的有python,如果你需要查看版本,打开terminal输入以下命令: python --version 如果你需要安装新的python版本,有几种方法可以安装,一是去python官网下载 ...

  5. Mac版-python环境配置(一):Python下载安装

    Mac OS X系统自带python,可以在终端输入python查看版本[输入exit()即可退出],如下: 从上图中可以看到,mac自带python 2.7.10,版本相对较低.现在python已升 ...

  6. Mac版-python环境配置(二):编译器pycharm下载安装

    简介 PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本 ...

  7. Mac搭建python环境

    1 安装xcode 2 安装 brew ruby-e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mast ...

  8. 2.Python环境搭建Window、mac、linux

    1.Windows安装Python详解 使用任何高级编程语言都需要有一个自己的编程环境,Python 也不例外.只要使用 Python,就必须要配置 Python 的开发和运行环境. Python 本 ...

  9. anconda使用---使用conda管理python环境

    一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...

随机推荐

  1. GDKOI2016 游记

    2016.2.19~2.15强行广州koi被虐…… DAY 0 19日下午到达,第六次入住中大西苑宾馆,怂逼抽签抽中外交大使特殊职位,然后就一边看<死神>一边等石门两位室友啦.必须吐槽宾馆 ...

  2. Vijos P1785 同学排序【模拟】

    同学排序 描述 现有m位同学,第1位同学为1号,第2位同学为2号,依次第m位同学为m号.要求双号的学生站出来,然后余下的重新组合,组合完后,再次让双号的学生站出来,重复n次,问这时有多少同学出来站着? ...

  3. dijk

    .....................用矩阵存..................... 1 int mp[N][N]; bool p[N]; int dist[N]; void dijk(int ...

  4. Zabbix如何实现批量监控端口状态

    引言 ------------------------------------------------------------------------------------------------- ...

  5. android弹力效果菜单、组件化项目、电影票选座控件的源码

    Android精选源码 android启动扫一扫和收付款的小部件源码 android弹力效果的抽屉菜单源码 对RecyclerView Item做动画 源码 android类似QQ空间,微信朋友圈,微 ...

  6. 分布式监控系统--zabbix

    1Zabbix简介 Zabbix 是一个企业级的分布式开源监控方案. 2.监控系统架构 C/S架构 客户端/服务器端,这种架构适合规模较小,处于同一地域的环境 C/P/S 客户端/代理端/服务器端/, ...

  7. [20160711][VS2012配置OpenCV2.4.9]

    相关说明 OpenCV是一套开源机器视觉库,用于简化机器视觉算法的开发与调试. 移植环境 操作系统:Win7 64位 移植软件:Visual Studio 2012 代码下载: https://sou ...

  8. 【学习笔记】Java finalize()的使用

    <Java编程思想>中有提到,Java的垃圾回收器并不是那么靠谱,垃圾回收会占用很大的资源开销,垃圾回收器很懒,当变量和对象不再被引用.脱离作用域的时候,垃圾回收器会不定时的进行垃圾回收, ...

  9. Android ListView 设置单选

    为 ListView 设置选中状态,需要经过如下几个步骤: 设置 ListView 的 android:choiceMode="singleChoice" 设置 ListView ...

  10. Oracle创建、管理撤销表空间

    撤销管理模式: 用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo manage ...