学习环境: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环境,在命令行下解压:
代码语言:javascript复制xz -d Python-3.6.8.tar.xz
tar xvf Python-3.6.8.tar
然后安装:
代码语言:javascript复制./configure
make
但编译一直报错:_ssl和_hashlib模块编译失败,经过查证,猜测是我的redhat版本过低,然后自带的openssl的版本也比较低,需要对openssl进行升级。
先使用下列命令卸载旧的openssl包:
代码语言:javascript复制rpm -qa|grep openssl
rpm -e XXXX
注意:不要轻易升级openssl,因为依赖这个包的系统服务有很多,最好是在一个独立的开发机器上去进行,否则很可能会影响你其他的业务。
我们到openssl官网下载openssl-1.0.2h.tar.gz包,解压后使用下列命令:
代码语言:javascript复制./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl -Wl,-rpath,/usr/local/ssl/lib shared
shared是指定编译动态库,否则默认编译成静态库libssl.a文件了。 然后执行如下命令:
代码语言:javascript复制make
make install
装完以后继续编译python,还是报错如下:
代码语言:javascript复制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的目录,如下:
代码语言:javascript复制find / -name libssl.so*
发现安装在/usr/local/ssl/lib目录下,执行如下命令:
代码语言:javascript复制echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
重新编译,ssl和hashlib模块编译成功。
编译完成后安装,命令如下:
代码语言:javascript复制make install
此时查看python,还是旧的3.5版本,因为没有创建链接,按照完整的过程,我们重新编译如下:
代码语言:javascript复制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命令行,如下:
代码语言:javascript复制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包:
代码语言:javascript复制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。 解压后执行命令:
代码语言:javascript复制python setup.py install
报错,没有pytz模块。 使用pip安装pytz模块:
代码语言:javascript复制pip install pytz
安装成功。
django目录中重新执行命令:
代码语言:javascript复制python setup.py install
出现如下字样,说明安装成功:
代码语言:javascript复制Using /usr/local/python3.6.8/lib/python3.6/site-packages
Finished processing dependencies for Django==1.11.20
我们安装使用的是root用户,但使用root用户是比较危险的,我们创建一个python开发专用的用户,执行如下命令:
代码语言:javascript复制useradd pycode
passwd pycode #创建密码,这里密码跟用户名一样,是:pycode(生产环境不能这样)
su - pycode进入pycode用户的根目录/home/pycode目录下,到这里,一个django的完整开发环境就搭建完成了。