Python环境入坑记

理想很美好,现实很骨干.....

Goal : Office PC -> Install Vmware & CentOS -> Pythoner But : Settings -> how to root -> how to install git -> how to talk to unblock openssh -> how to use zsh -> how to use oh-my-zsh -> how to use atom -> libsecret error -> still in keng -> how to install pyenv -> how to make it work -> how to make shell work for me -> how to config -> where is shortcut? -> how to blog -> how to use Chinese input -> how to know linux very well -> linux books & shell programming learning Crazy But: -> pyenv install do not work here -> pool internet -> need another way -> mirror -> pip install do not work here too -> pool internet -> need antoher way -> mirror again

On My MAC -> why there are so many pythons? -> what is anaconda python -> which python am i using -> how to clean them all -> how to make them all works for me as I want?

每一个箭头都是一段入坑出坑,也许还有没出来的坑的经历。踩的坑多了,也就不觉得自己在坑里了。今天梳理一下Python环境相关的问题和坑,作一个经验总结。

环境假设

前情提要是:你有一台MAC 或者Linux 系统环境,已经安装了zsh 和 Oh-my-zsh ,下一步准备和python 一起愉快的玩耍。你肉身在墙内,由于种种网络环境的限制还不一定能够完全自由的站在墙外。使用的环境主要以python3 为主,但是语言这件事情,总是越自由一些越好不是么?也就是说最好可以对python 的环境进行有效的管理。

理论知识

pyenv virtualenv -> pyenv -> anaconda python -> zsh/bsh/csh -> internet

在一台Linux中可以安装多个版本的Python,但是系统默认的一般都只有一个,所以你需要一个可以管理多个版本python的软件来总体管理。如果你对Windows系统比较熟悉,可以类比一台Win下安装了一个虚拟机,在这个虚拟机里,你想怎么搞都行。 还有一个环境变量的概念,当有多个python的时候,系统调用哪一个python,或者系统如何找到你的“虚拟机”,调用“虚拟机”里的python,都需要在环境变量里用环境变量的方式做明确的说明。 还有一个很坑的事情是python的很多一手资源获取的速度非常非常的慢,不知到为什么。解决办法有两个,翻出去,或者找一个国内的镜像。 之前我也推荐给小伙伴安装anaconda套件,这样就可以不管各种环境问题了,这是一个初级的处理方案,当你开始对python 有更多了解有更多定制话的需求之后,当初盲目安装的anaconda反而成了“不可承受之重”,因为自己压根不知到anaconda默默的做了哪些系统配置的改动。 除了python的哪些坑,其实shell本身也有一些坑,在启用了zsh之后,原来的一些环境变量需要进行调整,因为最终zshrc会调用一部分其他环境变量,还有一些是在zshrc自己做的配置。不同的顺序也会导致不一样的效果呢。 以上,基本是这篇博客里最精简和基础的理论知识了。如果你看不懂,没关系,直接按照下面的一步一步做吧。

坑点精讲

环境变量

文件

涉及到的文件 /etc/profile /etc/bashrc /etc/zshrc ~/.profile ~/.bash_profile ~/.bashrc ~/.zshrc

语法和实例

export PATH="/home/leon/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/home/leon/bin:/usr/local/sbin:/usr/sbin:/sbin" eval "" eval "$(pyenv init -)"

常用命令

$ env $ printenv

  • 展示环境变量配置文件的内容 $ set
  • 展示所有的变量