Hi,python!

4-01 1,349 views

之前尝试了在windows下导入py外部库,被提示需要安装vs(有强迫症的我并不想装)。所以算试一试在centos上配置python编程环境。

好久没有摸linux了,果然碰到了很多问题。

centos7自带的py版本是2.7,还是想更快的熟悉3,所以打算手动升级以下。

P.S. 不按照顺序来的话会出现巨量奇怪错误(先把坑留着,以后心情好了说不定会去找找根源)

 

 

1.安装所需模块

# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

坑1:先安装py3再返回来安装openssl-devel会报错(提示文件“损坏”?)

 

 

2.安装新版本py

官网下载新版本的source codes、解压、进入对应路径。

# ./configure --prefix=/usr/local/python
# make && make altinstall

linux里部分命令由python2写成,所以不更改这个环境变量会比较合适,所以我们选择make altinstall而非make install(即不更改/usr/bin下软链接的指向)
这样一来,每次都得输入python3.x来执行py?还是新建一个环境变量改一改比较好。

(先手顺安装一下公用库)

# echo "/usr/local/python/lib" >> /etc/ld.so.conf
# ldconfig
# ln -s /usr/local/python/bin/python3.5 /usr/local/bin/python

敲完创建软链接的代码之后记得重启一次去应用(不知道为什么反正就是需要重启)

 

 

3.别忘了pip
一样地,下源码、解压、进入路径

# python setup.py install
# ln -s /usr/local/python/bin/pip /usr/local/bin/pip

以后就可以抛弃setup.py,简单的用pip管理外部库了。

 

 

 

notes
1.py2和py3是两个不兼容的不同软件。centos所自带的py为py2,且相关命令(比如yum)都由py2编写。
所以目前不推荐卸载py2,而是选择留着他在系统中让系统来调用。(这也是为什么要避免更改/usr/bin/python指向的原因。)

2.py外部库的源码安装方式用到了setup.py,需要基于setuptools.py3中已经自带了,所以不用额外花心思。
坑2:曾经遇到过一次相关意外:如果用yum方式手动安装了python-setuptools(setuptools明明是一个py的库居然可以用yum安装。)之后,再利用setup.py安装文件会报错。
怀疑是yum安装方式导致的py2和py3编程环境的冲突(瞎口胡的),先存疑。

3.关于环境变量。
安装新版本python之后,在/usr/bin和/usr/local/bin目录下都有了python软链接,而系统的调用是按照环境变量存在的顺序来调用的。
查看系统环境变量

# export

我们找到这一行,显示了所有的存储系统变脸的路径,系统会按顺序检索它们。

declare -x PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/awesomejiang/.local/bin:/home/awesomejiang/bin"

这个例子里,在命令行中输入python后,系统发现了/usr/local/bin下有python软链接,就直接调用了它。所以我们调用除了对应着的py3而不是/usr/bin下的py2.

欢迎留言