写了好多年的PHP代码,不免有些许的厌倦,是时候学一门新语言了,这就好比对男人来说,家里的女人看得久了,新鲜感荡然无存,自然想纳几房小妾,不过对于身处河东狮吼险境的我而言,此等美梦注定遥不可及,还是老老实实学编程吧,想当年我还像模像样的学过Python,可惜没坚持下来,希望这次能行。
闲言碎语不要讲,表一表Python的安装,操作系统为CentOS,因为版本旧,加之已经包含了Python-2.4.3,所以我换了一个路径安装了Python-2.7.5,目前此版本比较通用:
shell> wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz shell> tar zxvf Python-2.7.5.tgz shell> cd Python-2.7.5 shell> ./configure --prefix=/usr/local/Python-2.7.5 shell> make shell> make install
下面看看包管理工具,原本流行的是setuptools,不过现在它已经被distribute取代,除此以外,easy_install也已经被pip取代,下面让我们看看如何安装:
shell> wget http://python-distribute.org/distribute_setup.py shell> /usr/local/Python-2.7.5/bin/python distribute_setup.py shell> /usr/local/Python-2.7.5/bin/easy_install pip
更新:风水轮流转,目前 setuptools 和 distribute 已经合并,以后只有 setuptools 了,而且前面的 python-distribute.org 域名已经掉了,所以最新安装 easy_install 方式如下:
shell> wget https://bootstrap.pypa.io/ez_setup.py -O - | python
更新:以上安装 pip 的方法都过时了,现在用 get-pip.py 来安装。
既然是学习搭建Python环境,那么virtualenv是必须安装的,简单点说,它允许我们创建若干套隔离的Python运行环境,具体介绍可以参考奇虎的文章,让我们安装它:
shell> /usr/local/Python-2.7.5/bin/pip install virtualenv
接下来创建一个完全独立的Python环境FOO:
shell> /usr/local/Python-2.7.5/bin/virtualenv FOO
再看看如何进入环境和退出环境:
shell> source FOO/bin/activate shell> deactivate
此环境已经包含了pip,通过它安装的程序只存在于自己的环境里,不会污染别人。
怎么样?很好用吧!还能更好用,不过需要借助virtualenvwrapper,通过pip安装,它对virtualenv做了一个包装,一个典型的配置如下:
export WORKON_HOME=/path/to/home export VIRTUALENVWRAPPER_PYTHON=/path/to/python export VIRTUALENVWRAPPER_VIRTUALENV=/path/to/virtualenv source /path/to/virtualenvwrapper.sh
注意:使用virtualenv后,系统里会存在多套Python环境,并且不是通常的缺省路径,所以这就要求我们在写脚本的时候不要使用绝对路径,而应该使用env来增强通用性:
#!/usr/bin/env python
此外,使用virtualenv安装的Python环境都是相同版本的,如果你想安装不同版本,可以考虑使用其他应用,比如:pythonbrew,pyenv,pythonz等等。
时间的分界线:公元二零一七年…
一眨眼好几年过去了,最近要配置个新的 Python 运行环境,发现以前的知识都已经过时了,所以更新一下,使用 SCL 来安装 Python,使用 venv 取代 virtualenv。
一定要记住,我们是安装新版 Python,而不是升级系统上原有的旧版 Python,否则很多依赖关系可能会被破坏,下面是通过 SCL 来安装软件的典型步骤:
shell> yum install centos-release-scl shell> yum install rh-python35 shell> scl enable rh-python35 bash shell> python --version
如此新版 Python 就基本配置好了,再通过 venv 安装一个干净的环境:
shell> python -m venv /path/to/project shell> source /path/to/project/bin/activate
每次使用前通过 scl 命令激活新版 Python 即可,如果不这样,而是使用绝对路径来访问新版 Python,那么你可能会遇到链接库找不到的问题:
shell> ldd /path/to/project/bin/python linux-vdso.so.1 => (0x00007fffa6333000) libpython3.5m.so.rh-python35-1.0 => not found libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032a1600000) libdl.so.2 => /lib64/libdl.so.2 (0x00000032a1a00000) libutil.so.1 => /lib64/libutil.so.1 (0x00000032a3a00000) librt.so.1 => /lib64/librt.so.1 (0x00000032a1e00000) libm.so.6 => /lib64/libm.so.6 (0x00000032a2200000) libc.so.6 => /lib64/libc.so.6 (0x00000032a1200000) /lib64/ld-linux-x86-64.so.2 (0x00000032a0a00000)
这是因为 scl 把链接库安装到了自己的目录里,我们想要配置一下:
shell> echo "/opt/rh/rh-python35/root/usr/lib64" > /etc/ld.so.conf.d/rh-python35.conf shell> ldconfig
此时最好再继续配置一下 pip,因为缺省的安装源速度太慢,推荐改成豆瓣的镜像,速度快得不要不要的,这里 show 一个技巧,看怎么找 pip 的配置文件:
shell> strace -eopen pip list open("/etc/xdg/pip/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/etc/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/root/.pip/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/root/.config/pip/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/etc/xdg/pip/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/etc/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/root/.pip/pip.conf", O_RDONLY|O_CLOEXEC) ... open("/root/.config/pip/pip.conf", O_RDONLY|O_CLOEXEC) ...
我选择 /etc/pip.conf 作为我的配置文件,编辑内容:
[global] timeout = 60 index-url = https://pypi.doubanio.com/simple
如上这个搭建 Python 环境的文档基本算跟上时代了,收工!
Python rocks 🙂
Arch Linux 使用的配置参数是:
./configure –enable-shared –with-threads –with-computed-gotos –enable-ipv6 –with-valgrind –with-wide-unicode –with-system-expat –with-system-ffi
Python 3.3 以前的 Unicode 支持分两种,–with-wide-unicode 更全一些(不过没有也应该不会像 Ruby 那样出严重的问题)。–enable-shared 好像是嵌入 Python 解释器的程序需要的。
另外,部分版本使用 make altinstall 时不会覆盖 python 这个文件(只有 python2.7 之类带版本号的可执行文件)。
推荐用pycharm作为python的集成开发环境。pythonbrew还不错
以前也是一直用PHP,换了公司后,用PHP写后端脚本觉得实在太无聊,就拿python练手,感觉也还不错,在与系统结合方面比PHP还要方便一些。还拿python写了个SVN发布脚本,比开发WEB发布系统实在是效率高多了。
同感,开始看过几次 Python,都没有坚持下来。
Python 好用啊~~
centos的话,如果想要替换,还需要修改/usr/bin/yum
以原有默认安装为python2.4为例
将#!/usr/bin/python更改为#!/usr/bin/python2.4
并替换/usr/bin/python和/usr/bin/python-config
python用起来确实很舒服
Pingback引用通告: 实战Sentry | 火丁笔记
Pingback引用通告: 实战Sentry
Pingback引用通告: 实战Sentry-IT技术资讯