首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >学习搭建Python环境

学习搭建Python环境

作者头像
LA0WAN9
发布2021-12-14 08:15:04
发布2021-12-14 08:15:04
6650
举报
文章被收录于专栏:火丁笔记火丁笔记

写了好多年的PHP代码,不免有些许的厌倦,是时候学一门新语言了,这就好比对男人来说,家里的女人看得久了,新鲜感荡然无存,自然想纳几房小妾,不过对于身处河东狮吼险境的我而言,此等美梦注定遥不可及,还是老老实实学编程吧,想当年我还像模像样的学过Python,可惜没坚持下来,希望这次能行。

闲言碎语不要讲,表一表Python的安装,操作系统为CentOS,因为版本旧,加之已经包含了Python-2.4.3,所以我换了一个路径安装了Python-2.7.5,目前此版本比较通用:

代码语言:javascript
复制
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取代,下面让我们看看如何安装:

代码语言:javascript
复制
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 方式如下:

代码语言:javascript
复制
shell> wget https://bootstrap.pypa.io/ez_setup.py -O - | python

更新:以上安装 pip 的方法都过时了,现在用 get-pip.py 来安装。

既然是学习搭建Python环境,那么virtualenv是必须安装的,简单点说,它允许我们创建若干套隔离的Python运行环境,具体介绍可以参考奇虎的文章,让我们安装它:

代码语言:javascript
复制
shell> /usr/local/Python-2.7.5/bin/pip install virtualenv

接下来创建一个完全独立的Python环境FOO:

代码语言:javascript
复制
shell> /usr/local/Python-2.7.5/bin/virtualenv FOO

再看看如何进入环境和退出环境:

代码语言:javascript
复制
shell> source FOO/bin/activate
shell> deactivate

此环境已经包含了pip,通过它安装的程序只存在于自己的环境里,不会污染别人。

怎么样?很好用吧!还能更好用,不过需要借助virtualenvwrapper,通过pip安装,它对virtualenv做了一个包装,一个典型的配置如下:

代码语言:javascript
复制
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来增强通用性:

代码语言:javascript
复制
#!/usr/bin/env python

此外,使用virtualenv安装的Python环境都是相同版本的,如果你想安装不同版本,可以考虑使用其他应用,比如:pythonbrewpyenvpythonz等等。

时间的分界线:公元二零一七年…

一眨眼好几年过去了,最近要配置个新的 Python 运行环境,发现以前的知识都已经过时了,所以更新一下,使用 SCL 来安装 Python,使用 venv 取代 virtualenv。

一定要记住,我们是安装新版 Python,而不是升级系统上原有的旧版 Python,否则很多依赖关系可能会被破坏,下面是通过 SCL 来安装软件的典型步骤:

代码语言:javascript
复制
shell> yum install centos-release-scl
shell> yum install rh-python35
shell> scl enable rh-python35 bash
shell> python --version

如此新版 Python 就基本配置好了,再通过 venv 安装一个干净的环境:

代码语言:javascript
复制
shell> python -m venv /path/to/project
shell> source /path/to/project/bin/activate

每次使用前通过 scl 命令激活新版 Python 即可,如果不这样,而是使用绝对路径来访问新版 Python,那么你可能会遇到链接库找不到的问题:

代码语言:javascript
复制
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 把链接库安装到了自己的目录里,我们想要配置一下:

代码语言:javascript
复制
shell> echo "/opt/rh/rh-python35/root/usr/lib64" >
       /etc/ld.so.conf.d/rh-python35.conf

shell> ldconfig

此时最好再继续配置一下 pip,因为缺省的安装源速度太慢,推荐改成豆瓣的镜像,速度快得不要不要的,这里 show 一个技巧,看怎么找 pip 的配置文件:

代码语言:javascript
复制
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 作为我的配置文件,编辑内容:

代码语言:javascript
复制
[global]
timeout = 60
index-url = https://pypi.doubanio.com/simple

如上这个搭建 Python 环境的文档基本算跟上时代了,收工!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档