转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html

前言

centos7 自带有 python,但是却是 python2 版本的 python,如果你想安装个python3怎么办呢?
如果直接删除python2的话,可能会引起其他的问题,因为有些东西是依赖python2的,最好的解决办法是python3和python2共存,新安装一个python3的环境。

查看python状态

[root@bogon ~]# cd /   #先回到根目录
[root@bogon /]# whereis python #查看python所在目录(/usr/bin下)
python: /usr/bin/python2. /usr/bin/python /usr/lib/python2. /usr/lib64/python2. /etc/python /usr/include/python2. /usr/share/man/man1/python..gz
[root@bogon /]# cd /usr/bin #切到python目录
[root@bogon bin]# ll python*  #查看python开头的相关文件详情
lrwxrwxrwx. root root 2月 : python -> python2
lrwxrwxrwx. root root 2月 : python2 -> python2.
-rwxr-xr-x. root root 4月 python2.
[root@bogon bin]#

从查看的结果可以看到python指向的是python2 ,python2指向的是python2.7。那也就是在控制台输入python、python2、python2.7都是运行python2.7

如果我们安装一个python3.6的环境,让python指向3.6, python2指向python2.7, 那就可以完美的共存了

准备安装python3

安装python3.6之前,先备份python包,因为一会要替换这个文件

[root@bogon bin]# mv python python.bak  #本步骤,执行的命令
以下为查看结果
[root@bogon bin]# ll python* #只是查看执行的结果
lrwxrwxrwx. root root 2月 : python2 -> python2.
-rwxr-xr-x. root root 4月 python2.
lrwxrwxrwx. root root 2月 : python.bak -> python2

yum配置

yum是依赖于python2的,所以需要更改yum里面的python指向,vim打开 /usr/bin/yum

[root@bogon Python-3.6.]# vim /usr/bin/yum
#! /usr/bin/python修改为#! /usr/bin/python2
打开后输入键盘上i键,进入编辑状态,把第一行#! /usr/bin/python修改为#! /usr/bin/python2

编辑完之后,按ESC返回,输入:wq保存退出

接着vim打开/usr/libexec/urlgrabber-ext-down

[root@bogon Python-3.6.]# vim /usr/libexec/urlgrabber-ext-down
#! /usr/bin/python 修改为#! /usr/bin/python2

下载安装包

从python安装包的历史版本中https://www.python.org/ftp/python/,找到需要的安装包,比如我这里选3.6.8版本

从众多的包里面找到Python-3.6.8.tgz包,那么下载地址拼接下就是:https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

在Centos 7系统里面新建一个目录,用于存放下载的python3安装包,比如:/usr/local/python3

[root@bogon bin]# mkdir /usr/local/python3

cd到 /usr/local/python3目录,用wget下载3.6.8安装包

[root@bogon python3]# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
以下为下载过程:%为下载完成
---- ::-- https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
正在解析主机 www.python.org (www.python.org)... 151.101.24.223, 2a04:4e42:2e::
正在连接 www.python.org (www.python.org)|151.101.24.223|:... 已连接。
已发出 HTTP 请求,正在等待回应... OK
长度: (22M) [application/octet-stream]
正在保存至: “Python-3.6..tgz” %[=========================================================================>] ,, .08MB/s 用时 76s -- :: ( KB/s) - 已保存 “Python-3.6..tgz” [/])

        wget命令使用请查看:https://www.cnblogs.com/cindy-cindy/p/6847502.html----------这与安装无关

解压tgz包

等待下载完成之后会在当前目录下出现一个tgz包,tar命令解压这个包到当前目录就可以

[root@bogon python3]# tar -xvf Python-3.6..tgz
解压完成后,会多一个
[root@bogon python3]# ll
总用量
drwxr-xr-x. 12月 : Python-3.6.
-rw-r--r--. root root 12月 : Python-3.6..tgz

指定安装目录

解压完之后需要编译Python-3.6.8包下的文件,先cd过去执行完这句命令之后,把python的安装目录指定一下,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。
如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。

[root@bogon python3]# cd Python-3.6.
[root@bogon Python-3.6.]# ./configure --prefix=/usr/local/python3Dir

          在此处被坑不知道使用这个命令会如何     ./configure --prefix=/usr/local/python3Dir --with-ssl

又是不行,报错

#不报错的话没有这些
[root@bogon Python-3.6.]# ./configure --prefix=/usr/local/python3Dir
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for python3.... no
checking for python3... no
checking for python... no
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... linux
checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/python3/Python-3.6.8':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
[root@bogon Python-3.6.]# cd ..
[root@bogon python3]# ./configure --prefix=/usr/local/python3Dir
-bash: ./configure: 没有那个文件或目录

        经百度,查看是缺少gcc插件,需要执行 yum install gcc命令,  问题详见 https://blog.csdn.net/duguduchong/article/details/8699774

执行下面之前,先看下这个 https://www.cnblogs.com/minglee/p/9232673.html

sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel 

安装make

接着之前的搞,在当前目录/usr/local/python3/Python-3.6.8执行make,执行完之后,接着输入make install

[root@bogon Python-3.6.]# make  # 执行时间还挺长的
[root@bogon Python-3.6.]# make install #执行这个命令之后出现 python3Dir 目录
Traceback (most recent call last):
File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line , in _run_module_as_main
"__main__", mod_spec)
File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line , in _run_code
exec(code, run_globals)
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__main__.py", line , in <module>
sys.exit(ensurepip._main())
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line , in _main
default_pip=args.default_pip,
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line , in _bootstrap
return _run_pip(args + [p[] for p in _PROJECTS], additional_paths)
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line , in _run_pip
import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available #-------不晓得这个错误有没有影响,zipimport。ZipImportError:无法解压数据;zlib不可用
make: *** [install] 错误 1
[root@bogon Python-3.6.]# #看样子是pip的问题,

       缺少zlib依赖包,请看这里  https://blog.csdn.net/u014749862/article/details/54430022/

yum -y install zlib*

正常 make install 截图

做个插入,这里有个问题?!!!

Python命令行下退格、删除、方向键乱码问题解决(亲测有效)https://blog.csdn.net/robin_star_/article/details/78774004

出现原因:readline模块没有安装

# 安装readline模块

yum -y install readline-devel

# 进入Python安装目录

cd /usr/local/python3/Python-3.6.

# 重新执行Python的安装

make && make install

安装完成

执行完毕之后,我们就可以切换到 /usr/local/python3Dir 目录下去查看,python3.6在bin目录

[root@bogon Python-3.6.]# cd /usr/local/python3Dir
[root@bogon python3Dir]# ls
bin include lib share
[root@bogon python3Dir]# cd bin
[root@bogon bin]# ls
2to3 idle3 pydoc3 python3 python3.-config python3.6m-config pyvenv
2to3-3.6 idle3. pydoc3. python3. python3.6m python3-config pyvenv-3.6

添加软链接

由于系统默认的python是指向python2,前面已经删除备份过了,这里执行把新安装的python3.6指向给/usr/bin/pythonn就可以了

[root@bogon bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python
[root@bogon bin]# python -V
Python 3.6.
[root@bogon bin]# python
Python 3.6. (default, Feb , ::)
[GCC 4.8. (Red Hat 4.8.-)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit() #输入python -V可以看到版本号,这样系统默认的就是python3.6.8版本了,如果想用python2.7版本,直接输入python2就可以了
[root@bogon bin]# python2
Python 2.7. (default, Apr , ::)
[GCC 4.8. (Red Hat 4.8.-)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
[]+ 已停止 python2

pip环境

python3安装完成之后,如果想用pip安装一些第三方包,系统会默认安装到python2的环境里面。为了能够使用pip安装到python3的环境,可以下载pip安装包,添加软链接。

  • 先cd到/usr/bin
  • mv备份pip
  • 添加python3Dir安装目录里面的pip3软链接
  • 查看pip -V 和pip2 -V
  • 查看所有的pip
[root@bogon bin]# pip
bash: pip: 未找到命令...
[root@bogon bin]# whereis pip
pip:[root@bogon bin]#
[root@bogon bin]#
[root@bogon bin]# cd /usr/bin
[root@bogon bin]# pwd
/usr/bin
[root@bogon bin]# ll pip*
ls: 无法访问pip*: 没有那个文件或目录
[root@bogon bin]# ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip #这里直接执行这个即可
[root@bogon bin]# ll pip*
lrwxrwxrwx. root root 2月 : pip -> /usr/local/python3/bin/pip3

我这里并没有pip的命令,故直接执行了这一个命令即可

ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip

(本次尝试失败,应该就是上面安装的时候报错的原因,暂时先这样了)

python其他快捷键(pytest、django-admin这些)

问题描述:

在安装完上述,python 和  pip 环境后,在linux命令行下直接执行 pytest 命令时,报错:没有发现此命令

解决办法一:

在pytest前,加  python -m ;    python -m 的意思就是说,使用python 下的 模块的命令

比如:运行pytest使用:python -m pytest (+其他参数)     #使用python下pytest相关命令,下同

     运行django相关:python -m django-admin (+其他参数)

   上述 pip的命令也可以这样实现,pip  也是python下的一个模块

解决办法二:

就是同上面的pip命令,来创建软连接,来实现直接在命令行 运行相关命令

ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip

问题解决

1.解决了上面的zlib问题, pip已经安装成功,可是一波刚平,一波又起风云,如下图

暂时以这两篇文章,为准吧, ./configure --prefix=/usr/local/python3Dir --with-ssl

https://blog.csdn.net/zhengcaihua0/article/details/79681991 主要以这个为准,

1. 查看openssl安装包,发现缺少openssl-devel包
[root@localhost ~]# rpm -aq|grep openssl
openssl-0.9.8e-.el5
openssl-0.9.8e-.el5
[root@localhost ~]# 2.yum安装openssl-devel
[root@localhost ~]# yum install openssl-devel -y
查看安装结果
[root@localhost ~]# rpm -aq|grep openssl
openssl-0.9.8e-.el5_9.
openssl-0.9.8e-.el5_9.
openssl-devel-0.9.8e-.el5_9.
openssl-devel-0.9.8e-.el5_9. .重新对python3.6进行编译安装,用一下过程来实现编译安装: cd Python-3.6.
./configure --with-ssl
make
sudo make install

不在报错,那就ok了

https://blog.csdn.net/jeryjeryjery/article/details/77880227   这个作为了解吧

环境准备—之—linux下安装python3和pip3的更多相关文章

  1. 【转】在Linux下安装python3

    原文链接:http://www.cnblogs.com/feng18/p/5854912.html 1.linux下安装python3 a. 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wg ...

  2. Linux下安装Python3.3.0

    Linux下安装Python3.3.0_路易_新浪博客 Linux下安装Python3.3.0 (2013-01-08 11:45:37)

  3. Python3.x:Linux下安装python3.6

    Python3.x:Linux下安装python3.6 下载 #先进入download文件夹 cd /home/download #输入命令(下载到当前目录) wget https://www.pyt ...

  4. Linux下安装python3.3.2及configrue、make、make install

    一.安装python3.3.2 raspberry的/usr/local/src目录没有权限,可执行如下命令 pi@raspberrypi:~$ sudo chmod -R 777 /usr/loca ...

  5. linux下安装python3(转)

    一.Linux下安装Python 二.Linux下Python安装完成后如何使用pip命令 三.Linux下Python安装完成后如何使用yum命令 四.Linux下安装Anaconda 五.Linu ...

  6. Linux下安装Python3.6

    1.安装Python3.6 依赖环境安装 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-deve ...

  7. Linux下安装Python3.6.8并安装包

    一.问题在Linux下面安装Python3.6.8,由于在Linux中的Python是2.7.x的版本因此,我们需要在Linux中新下载一个Python 二.解决1.python的安装(1)下载包利用 ...

  8. Linux下安装python3环境搭建

    Linux下python3环境搭建 Linux安装软件有哪些方式? rpm软件包 手动安装 拒绝此方式 需要手动解决依赖关系 yum自动化安装 自动处理依赖关系 非常好用 源代码编译安装,可自定义的功 ...

  9. Linux下安装 Python3

    前言 Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如centos下的yum就是python2 ...

随机推荐

  1. Android Profiler内存检测

    Memory Profiler是Android Profiler中的一个组件,Android Profiler是Android3.0用来替换之前Android Monitor的观察工具,主要用来观察内 ...

  2. 6#day2总结

    一次小小的总结https://github.com/DuGuQiuBai/Java/blob/master/day02/day02%E6%80%BB%E7%BB%93.txt 1:常量(掌握) (1) ...

  3. sitecore开发入门Sitecore的CRUD操作 - 第二部分

    在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...

  4. 最新QT4.8+kernel_3.2.5+uboot_2010.06+tslib移植成功-问题小结

    2012-02-19 21:34:13 都是从源码下载然后自己修改,使用与TQ2440,之前uboot其实已经完成了.但是yaffs2没带起来.现在回头看来是很简单的了.bootargs参数中我设置成 ...

  5. zigbee组网函数的一些用法

    1.NLME_PermitJoiningRequest(0)  :(1)值0x00:表示禁止加入网络  (2)值0x01-0xFE:表示允许链接的秒数 (3) 值0xff:表示启用网络 同时此函数:是 ...

  6. powerdesigner 连接 Oracle ,并将表结构导入到powerdesigner中

    powerdesigner 详细很多人都用过,很多人可能也有用来连接各种数据库以及从数据库中把表结构更新到powerdesigner的model中,或者将自己设计的表结构应用到数据库中.那么我今天就说 ...

  7. 在sql中select的执行顺序

    <select{[distinct |all] columns |*}> [into table_name] <from {tables |views | other select} ...

  8. Vue 组件&组件之间的通信 之 单向数据流

    单向数据流:父组件值的更新,会影响到子组件,反之则不行: 修改子组件的值: 局部数据:在子组件中定义新的数据,将父组件传过来的值赋值给新定义的数据,之后操作这个新数据: 如果对数据进行简单的操作,可以 ...

  9. C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密

    前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...

  10. 图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化

    今天,我们学习了直方图.于是乎,回来我就用matlab代码实现一下.昨天受到道路检测老师课上一个内容的影响(对于道路裂缝的检测,我突发奇想,如果对于道路图像进行操作,是否能够让裂缝与道路分离,使得图像 ...