Mac 安装 ipyhton Notebook 全记录

ipython是Python的集成工具,而ipython Notebook则是通过ipython学习Python的利器,今天尝试安装它,结果出现了很多安装期间的问题,这里记录一下。

配置

首先到github上clone下notebook的代码到本地

git clone https://github.com/ipython-books/cookbook-code.git

第一次尝试

满怀欣喜的准备启动notebook

ipython notebook[*]

结果报错了 :anger: 其实还是可以理解的,毕竟第一次就成功的人不多。我看了一下错误,应该是少了一些Python的模块,依次逐个安装

sudo pip install xxx

必要的时候,需要在intsall后面加上–upgrade的参数来强制升级一下

第二组尝试

确实是第二组尝试,因为,在这次解决之前,已经运行了多次[*]命令来检查是否还有遗漏的模块了。

这时候启动成功了!

满怀欣喜的进入notebook本地服务的界面 http://localhost:8888/

然而,这次依然波折,点击相应的py文件,发现无法加载,页面白茫茫一片 :cry:

查了半天,发现,是因为OS X 10.11的问题

~~ 科普环节开始!~~

Apple 从10.9 开始导入kext需要签名认证后,在10.10全面启用此功能,每项置入/System/Library/Extersions/中的kext必需要经过签名认证系统才会启用此功能,然而在10.11时另外追加了System Integrity Protection (SIP)功能来保护系统档案及kext驱动避免被修改,即使是root权限也无法更改已经被系统设定的项目。

image

可以在cat /System/Library/Sandbox/rootless.conf文件中查看被OS X强制锁定的文件目录,不幸的是,我们的ipython目录正在其中 :broken_heart:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
➜ cookbook-code git:(master) ✗ cat /System/Library/Sandbox/rootless.conf
/Applications/App Store.app
/Applications/Automator.app
/Applications/Calculator.app
/Applications/Calendar.app
/Applications/Chess.app
/Applications/Contacts.app
/Applications/Dashboard.app
/Applications/Dictionary.app
/Applications/DVD Player.app
/Applications/FaceTime.app
/Applications/Font Book.app
/Applications/Game Center.app
/Applications/Image Capture.app
/Applications/Launchpad.app
/Applications/Mail.app
/Applications/Maps.app
/Applications/Messages.app
/Applications/Mission Control.app
/Applications/Notes.app
/Applications/Photo Booth.app
/Applications/Photos.app
/Applications/Preview.app
/Applications/QuickTime Player.app
/Applications/Reminders.app
/Applications/Safari.app
/Applications/Stickies.app
/Applications/System Preferences.app
/Applications/TextEdit.app
/Applications/Time Machine.app
/Applications/Utilities/Activity Monitor.app
/Applications/Utilities/AirPort Utility.app
/Applications/Utilities/Audio MIDI Setup.app
/Applications/Utilities/Bluetooth File Exchange.app
/Applications/Utilities/Boot Camp Assistant.app
/Applications/Utilities/ColorSync Utility.app
/Applications/Utilities/Console.app
/Applications/Utilities/Digital Color Meter.app
/Applications/Utilities/Disk Utility.app
/Applications/Utilities/Feedback Assistant.app
/Applications/Utilities/Grab.app
/Applications/Utilities/Grapher.app
/Applications/Utilities/Keychain Access.app
/Applications/Utilities/Migration Assistant.app
/Applications/Utilities/Script Editor.app
/Applications/Utilities/System Information.app
/Applications/Utilities/Terminal.app
/Applications/Utilities/VoiceOver Utility.app
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/System
* /System/Library/Caches
booter /System/Library/CoreServices
* /System/Library/CoreServices/Photo Library Migration Utility.app
/System/Library/CoreServices/RawCamera.bundle
* /System/Library/Extensions
/System/Library/Extensions/*
UpdateSettings /System/Library/LaunchDaemons/com.apple.UpdateSettings.plist
* /System/Library/Speech
* /System/Library/User Template
/bin
dyld /private/var/db/dyld
/sbin
/usr
* /usr/libexec/cups
* /usr/local
* /usr/share/man
# symlinks
/etc
/tmp
/var

由于启动SIP功能,rootless.conf在未关闭时是无法进行修改的。

而顾名思义,rootless的意思就是,即使你是root用户,也不能轻易动我! :weary:

这时候,我们请出大名鼎鼎的csrutil工具

image

我们运行下csrutil status发现,SIP默认都是开启的,好吧,我们关闭丫

csrutil disable

杯具在这时候发生了,系统提示,只能在恢复模式下运行= =,果然应该仔细看usage的(如上图)

这时候继续进入恢复模式,重启电脑,按下Alt+R进入恢复模式,进入terminal运行上面的命令,终于搞定!

第三组尝试

这时候我们重启电脑,再运行csrutil status,果然SIP已经被关闭成功了~ :grin:

image

这时候再次进入notebook,我去……还是有问题 :disappointed:

依然提示一些奇奇怪怪的信息(恕我没有保存下来),这时候解决办法是,重新安装ipyhton & jupyter

又经过一番激烈的依赖模块添加之后,我们又开始启动了

第四组尝试

此时运行,终成正果!

image

上一张运行中的大图,以飨观众

image

后记

这次安装notebook,遇到的问题确实非常多,本来一味Mac机本身会自带很多东西,结果还是因为各种包的确实和版本的不匹配出现了很多异常,好在最终都解决了,希望这个过程对大家都借鉴的意义。

另外,关于更多的ipyhton和notebook的信息,大家可以到http://nbviewer.ipython.org/去查询,把神器用起来~