搭建Python开发环境遇到的坑

1.安装python

官方链接
安装完成后,打开IDLE 显示Tcl/Tk不稳定,提示连接https://www.python.org/download/mac/tcltk/#activetcl-8-5-18-0 根据我电脑的型号,我选择了ActiveTcl 8.5.18.0

2.使用pip安装套件 安装时都需要加管理员权限

sudo -H pip install requests
sudo -H pip install BeautifulSoup4
sudo -H pip install jupyter
jupyter notebook //打开视窗

3.如何安装pip

使用pip命令时,发现系统中没有pip命令,于是到官方下载
然后用python运行就好了,在终端键入 python 文件

4.安装jupyter报错,出现操作不被允许

Operation not permitted: '/tmp/pip-RzvVTs-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/dateutil'")]

原因是:由于El Capitan及之后引入了SIP机制(System Integrity Protection),默认下系统启用SIP系统完整性保护机制,无论是对于硬盘还是运行时的进程限制对系统目录的写操作。
有两种方案可以解决这个问题:

方案1:取消SIP机制
重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式)
左上角菜单里找到实用工具 -> 终端
输入csrutil disable回车
reboot重启Mac即可
如果想重新启动SIP机制重复上述步骤改用csrutil enable即可

方案2:基于用户的权限来安装模块包显得更加合理。
sudo -H pip install jupyter --user -U

我选择了第二个方案,是不报错了。但是jupyter依然没安装成功,感觉问题出在了安装时寻找的是系统的2.7版本,而不是我安装的3.6版本。
我尝试使用 sudo ln -s /usr/local/bin/python3 /usr/bin/python 命令创建连接,使我在终端输入python时可以显示最新的版本,但是依然报权限错误,即使我后面加了--usre -U

5.只使用最新版python

实在没办法,我最终采用了放弃使用原有的python2.7,只保留了最新版的

先把它这个文件夹(/usr/bin/python)删掉(找不到可以不删),因为我们就是要重做这个链接文件。

如何知道python路径呢,我们可以使用which python 来显示python的路径,事实上此命令还可以查其他东西的路径。

/usr/bin/python(有人说不建议重做这个链接,但是既然选择一个python环境来用,就只用一个即可,把主要的python设置到这里,以绝后患。我也试过直接加alias到环境变量,但是没用,所以干脆从根本解决问题。)

由于苹果安全策略,root用户也无法更改/usr/bin目录,所以要先禁用rootless功能,跟上述第一个方案一样。
于是需要重启,按住command+R,在顶部菜单选终端csrutil disablereboot重启后
就可以更改/usr/bin目录了。

sudo rm /usr/bin/python
sudo ln -s /usr/local/bin/python3 /usr/bin/python

第二句是创建一个链接,链接到你要的位置。
然后在终端打python就显示为新安装的版本了。

6.jupyter安全机制提升

这次最后顺利安装了 jupyter 但是执行jupyter notebook 却报以下错误:

execution error: “"http://localhost:8888/tree?token=dca583b0c33ef395d3c778e015dc75a656d1c3db8293e0fd"”不理解“open location”信息。 (-1708)

这其实也不是一个错误原因是jupyter近期更新了安全机制,默认需要输入密码才能使用;
浏览器无法自行开启,参考
由于我的系统是10.12.5的,根据提示,我把带有token的那段复制粘贴到浏览器打开便可以打开使用。根据上述参考,我创建了配置文件,默认用Safari打开。
但我想默认用Google打开,于是我参考连接将Safari改为Chorme,最终的结果是我们的chorme可以打开,并非是在隐身模式下启用的。也就是说我的电脑可以正常使用。

你可能感兴趣的:(搭建Python开发环境遇到的坑)