Mac下操作Python开发环境小结

Mac下的Python环境比较乱,系统自带了一个基础的,Xcode 貌似 也自带了一个,要做科学计算Anaconda肯定要来一份,Anaconda创建的各种环境很容易被自动搜索到。同时,Home brew也搞了一套自己的东西。直到现在,我也不清楚下面:

╰─ where python
/usr/local/bin/python
/usr/bin/python

看到的这俩货分别是谁装进去的……

要搞开发的话,肯定是需要完全控制环境。由于Python与系统耦合较深,日常升级什么的也难免,所以第一原则是只用虚拟环境开发。需要什么东西尽量新建虚拟环境,不要往系统目录里面搞。下面总结几点:

  1. 由于Python2/Python3这个历史问题,写命令要养成写python2/python3/pip2/pip3的习惯——无论在哪里。直接写不带数字的命令不一定调用到谁。
  2. 避免使用系统级pip。这玩意儿覆盖起东西一点都不含糊,弄脏了就很难收拾。这个习惯同样适用于带有包管理的Linux。有一次在Manjaro下pip了一个包,后面发现pip过的包居然干扰pacman升级。
  3. 科学计算去Anaconda独立搞。
  4. 网页开发的比较麻烦,因为Anaconda不好移植,所以还是想用Virtual Env,但是brew由于包管理器的某些兼容问题,提供的包并不好用。又不想pip安装。最后发现python3 -m venv --help提供了一个虚拟环境管理器,应该是Python3以后官方自带的,这个挺好用的。
  5. 一般给网页开发虚拟环境的python2/3可执行文件是取自brew安装的Python。有一个问题是:如果是链接过去的,brew升级Python后再进行brew cleanup时会不经警告地损坏这些链接。再次使用时会发现虚拟环境中可执行文件没法调用(但系统path内存在的其他python可执行文件可能会给你一种这几个文件还能执行的假象,很坑),错误信息类似 /usr/local/Cellar/python/3.6.4/Frameworks/Python.framework/Versions/3.6/Resour: bad interpreter: No such file or directory
  6. 如果环境已经坏了,解决方法是手动删掉所有损坏的链接,然后在这个地方重新新建虚拟环境: // 删除当前目录下所有链接文件: find . -type l -delete // 新建虚拟环境 python3.6 -m venv .
  7. 当然,如果可能比较好的办法是,新建虚拟环境时就选择不要文件链接方式,而是完整复制一套运行环境过来。这个可以通过file bin/python3看输出信息是文件还是链接来确定。
  8. 虚拟环境里面的pip3就可以为所欲为了。比如升级所有pip包:pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U
  9. 中科大开源软件源站真是业界良心,诚意满满,比清华那小家子气的限速站的好用多了。
  • 最后更改: 2019/05/27 14:23