管理Mac的Python环境

栏目: Python · 发布时间: 8年前

内容简介:管理Mac的Python环境

问题描述

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

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

调研

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

解决步骤

1. 删除通过 Python 官网脚本安装的 python 3.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测试,因为这个环境跟目标用户的环境应该是一致的。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java Concurrency in Practice

Java Concurrency in Practice

Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea / Addison-Wesley Professional / 2006-5-19 / USD 59.99

This book covers: Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Pe......一起来看看 《Java Concurrency in Practice》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器