在Mac OS上搭建Python的开发环境


Posted in Python onDecember 24, 2015

一. 安装python

mac系统其实自带了一个python的执行执行环境,用来运行python还行,但是开发可能就不够了,因此我们需要重新安装python。这里有两种方案安装:

1.homebrew

brew install python

这个方案比较简单,如果出错的话可以给前面加sudo试试,这个安装的python可能不是最新版.

2.从官网下载安装
大家可以从https://www.python.org/download下载安装最新版的python,安装比较无脑,一路按下去就OK,缺点是以后升级,卸载都得自己维护.

这两个方法安装的python的位置是不一样的,大家可以用:

which python

来查看安装位置.安装完成后在终端中键入python来验证安装是否成功.

二. 安装pip

这里好多文章中说要先安装easy_install, 其实是不用的.

1.我们先获取pip安装脚本:

wget https://bootstrap.pypa.io/get-pip.py

如果没有安装wget可以去这里将所有内容复制下来,新建get-pip.py文件,将内容拷进去就OK了.

2.安装pip

sudo python get-pip.py

用python执行刚才获取的脚本,这里sudo可以选择使用,若遇到类似这个报错则必须加sudo:

Exception:

Traceback (most recent call last):

...

OSError: [Errno 13] Permission denied: 'XXX/pip-0.7.2-py2.7.egg/EGG-INFO/dependency_links.txt'

Storing debug log for failure in /Users/bilt/.pip/pip.log

安装成功后可以在终端中键入pip来检测,如果不行重启终端后尝试.

3.修改pip源

在天朝,由于功夫网的原因,使用pip安装一些模块会特别慢甚至无法下载,因此我们需要修改pip的源到国内的一些镜像地址,特别感谢国内无私奉献的组织~

首先进入HOME路径:

cd ~

创建.pip目录:

mkdir .pip

创建pip.conf文件:

touch pip.conf

大家可以用自己喜欢的编辑器打开pip.conf文件,我现在使用的时v2ex的源,所以添加:

[global]
index-url = http://pypi.v2ex.com/simple

大家可以把index-url的值设置为自己实际源的地址.

至此pip源修改成功,以后使用pip安装模块时都会从这个源去下载安装,大家可以自行测试一下.

三. 其他模块安装

1.Pillow/PIL

想用python处理图片,自然少不了PIL这个模块, 由于PIL长期没有更新了, 所以有了Pillow这个模块, 依赖于PIL, 新版的pip安装后会自带Pillow, 但是好像没有zlib模块, 所以会报错:

File "/Library/Python/2.7/site-packages/PIL/Image.py", line 1105, in paste
 im.load()

 File "/Library/Python/2.7/site-packages/PIL/ImageFile.py", line 190, in load

 d = Image._getdecoder(self.mode, d, a, self.decoderconfig)

 File "/Library/Python/2.7/site-packages/PIL/Image.py", line 389, in _getdecoder

 raise IOError("decoder %s not available" % decoder_name)

IOError: decoder zip not available

因此我们需要手动重新安装:

sudo pip install -U Pillow

2.MySQLdb
在下面的网址下载mysqldb模块:

http://sourceforge.net/projects/mysql-python/
在mac os x直接双击解压,命令行进入解压后的目录, 执行python setup.py build

如果有

sh: mysql_config: command not found

提示,我们需要编辑下mysql的路径,使用vim打开setup_posix.py

找到:

mysql_config.path = "mysql_config"

改为:

mysql_config.path = "/usr/local/mysql/bin/mysql_config"

然后执行:

sudo python setup.py install

安装成功后,在命令行输入python进入python环境,输入import MySQLdb,我的环境中报下面的错误:

>>> import MySQLdb
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "MySQLdb/__init__.py", line 19, in </module><module>
 import _mysql
ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
 Referenced from: /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so
 Reason: image not found

解决方法,我们建立一个软链就可以了

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

这样我们就在mac os x的python环境下安装好了MySQLdb模块

Python 相关文章推荐
教你用Type Hint提高Python程序开发效率
Aug 08 Python
python访问抓取网页常用命令总结
Apr 11 Python
Python+Wordpress制作小说站
Apr 14 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
python函数不定长参数使用方法解析
Dec 14 Python
python实现TCP文件传输
Mar 20 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
Apr 01 Python
python如何求圆的面积
Jul 01 Python
python使用隐式循环快速求和的实现示例
Sep 11 Python
python实现剪贴板的操作
Jul 01 Python
详解Python字符串对象的实现
Dec 24 #Python
浅谈Python单向链表的实现
Dec 24 #Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 #Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 #Python
Python生成随机验证码的两种方法
Dec 22 #Python
基于python实现微信模板消息
Dec 21 #Python
python如何实现远程控制电脑(结合微信)
Dec 21 #Python
You might like
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
你需要知道的10个最佳javascript开发实践小结
2012/04/15 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
JavaScript中关于base64的一些事
2019/05/06 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
vue 数据操作相关总结
2020/12/17 Vue.js
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python自动化部署工具Fabric的简单上手指南
2016/04/19 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
Python使用re模块验证危险字符
2020/05/21 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
个人找工作求职简历的自我评价
2013/10/20 职场文书
常住证明范本
2015/06/23 职场文书
公司员工离职感言
2015/08/03 职场文书
中学音乐课教学反思
2016/02/18 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
浅析Django接口版本控制
2021/06/26 Python