学习环境:redhat 5.8
python版本:3.6.8
django版本:1.11.20

1.python环境安装

首先打开下面官网网址直接下载源码安装包:
https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
下载下来后,上传到linux环境,在命令行下解压:

xz -d Python-3.6.8.tar.xz
tar xvf Python-3.6.8.tar

然后安装:

./configure
make

但编译一直报错:_ssl和_hashlib模块编译失败,经过查证,猜测是我的redhat版本过低,然后自带的openssl的版本也比较低,需要对openssl进行升级。

先使用下列命令卸载旧的openssl包:

rpm -qa|grep openssl
rpm -e XXXX

注意:不要轻易升级openssl,因为依赖这个包的系统服务有很多,最好是在一个独立的开发机器上去进行,否则很可能会影响你其他的业务。

我们到openssl官网下载openssl-1.0.2h.tar.gz包,解压后使用下列命令:

./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl,-rpath,/usr/local/ssl/lib shared

shared是指定编译动态库,否则默认编译成静态库libssl.a文件了。
然后执行如下命令:

make 
make install

装完以后继续编译python,还是报错如下:

WARNING: renaming "_ssl" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory

WARNING: renaming "_hashlib" since importing it failed: libssl.so.1.0.0: cannot open shared object file: No such file or directory

说明没有找到动态库,我们找到libssl.so的目录,如下:

find / -name libssl.so*

发现安装在/usr/local/ssl/lib目录下,执行如下命令:

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v

重新编译,ssl和hashlib模块编译成功。

编译完成后安装,命令如下:

make install

此时查看python,还是旧的3.5版本,因为没有创建链接,按照完整的过程,我们重新编译如下:

mkdir /usr/local/python3.6.8
./configure --prefix=/usr/local/python3.6.8
make 
make install
rm -f /usr/bin/python
ln -s /usr/local/python3.6.8/bin/python3 /usr/bin/python

输入python进入python命令行,如下:

Python 3.6.8 (default, May 14 2019, 09:54:58) 
[GCC 7.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

可以看到python已经是3.6.8版本了。

在python中pip是一个很重要的命令,所以pip也重新链接到新版本去,注意pip不需要再另行安装,在python3.6.8的版本中已经包含了新的pip包:

rm -f /usr/bin/pip
ln -s /usr/local/python3.6.8/bin/pip3 /usr/bin/pip

2.django的安装

接下来安装django,在django官网上下载Django-1.11.20.tar.gz。
解压后执行命令:

python setup.py install

报错,没有pytz模块。
使用pip安装pytz模块:

pip install pytz

安装成功。

django目录中重新执行命令:

python setup.py install

出现如下字样,说明安装成功:

Using /usr/local/python3.6.8/lib/python3.6/site-packages
Finished processing dependencies for Django==1.11.20

我们安装使用的是root用户,但使用root用户是比较危险的,我们创建一个python开发专用的用户,执行如下命令:

useradd pycode
passwd pycode  #创建密码,这里密码跟用户名一样,是:pycode(生产环境不能这样)

su - pycode进入pycode用户的根目录/home/pycode目录下,到这里,一个django的完整开发环境就搭建完成了。
django和xadmin打造后台管理系统(一)-django开发环境搭建_Django教程