https://www.codetd.com/article/1967538
因为ubuntu16.04上python3版本是3.5.2,而我又是强迫症,就想用python3.6,因此开始折腾起来,不得不说,坑有点多,所以把安装过程记录下来,避免更多人踩到和我一样的坑
1.首先是安装python3.6.5
安装命令为:
sudo add-apt-repository ppa:jonathonf/python-3.6sudo apt-get updatesudo apt-get install python3.6
安装完成后,我们输入python3.6验证下安装成功了没,如果如下图所示,则为安装成功。
XXX
但是,此时系统默认的python3还是python3.5.2,输入python3,显示如下:
XXX
此时,只要把python3.6的优先级设置的比python3.5高就行了,设置的命令如下:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
查看设置的结果的命令为:
sudo update-alternatives --config python3
结果如下图所示:
XXX
说明python3.6的优先级已经比python3.5的高了,直接回车就可以了。
现在再输入python3,已经是python3.6.5了:
XXX
接下来升级pip3:
sudo apt-get install python3-pip #如果已经安装了pip3忽略这一条sudo pip3 install --upgrade pip
查看是否安装成功:
pip3 -V
不幸的事情发生了….
直接抛出错误:
ImportError: cannot import name main
经过一波搜索,找到了解决办法(感谢accumulate_zhang,博客地址:https://blog.csdn.net/accumulate_zhang/article/details/80269313),解决办法是修改pip3文件里的代码:
打开pip3文件,打开命令:
sudo gedit /usr/bin/pip3
把原来的
from pip import mainif __name__ == '__main__': sys.exit(main())
替换为:
from pip import __main__if __name__ == '__main__': sys.exit(__main__._main())
再次输入 pip3 -V,发现已经升级到最新版本了:
XXX
正当想万事大吉的时候,又出了问题,在启动器中无法双击打开终端(terminal)….,经过一波搜索,找到了解决方法。就是把python3.5中的一些依赖复制一份给3.6,解决办法是:
cd /usr/lib/python3/dist-packages/gi/sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.sosudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so
此时完美的解决了终端无法打开的问题,但还有个小问题,发现软件更新器和“软件和更新”两个软件还是无法打开,这个没有找到解决方案,个人依葫芦画瓢,进入到 (ps.一般可以直接用命令 sudo apt-get update更新的,所以这一部分做不做都行,看个人)
cd /usr/lib/python3/dist-packages/
把里面和python3.5相关的全部复制了一遍,命令如下:
sudo cp apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.cpython-36m-x86_64-linux-gnu.so
sudo cp brlapi.cpython-35m-x86_64-linux-gnu.so brlapi.cpython-36m-x86_64-linux-gnu.so
sudo cp _cffi_backend.cpython-35m-x86_64-linux-gnu.so _cffi_backend.cpython-36m-x86_64-linux-gnu.so
sudo cp cups.cpython-35m-x86_64-linux-gnu.so cups.cpython-35m-x86_64-linux-gnu.so
sudo cp cups.cpython-35m-x86_64-linux-gnu.so cups.cpython-36m-x86_64-linux-gnu.so
sudo cp cupsext.cpython-35m-x86_64-linux-gnu.so cupsext.cpython-36m-x86_64-linux-gnu.so
sudo cp _dbus_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_bindings.cpython-36m-x86_64-linux-gnu.so
sudo cp _dbus_glib_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_glib_bindings.cpython-36m-x86_64-linux-gnu.so
sudo cp hpmudext.cpython-35m-x86_64-linux-gnu.so hpmudext.cpython-36m-x86_64-linux-gnu.so
sudo cp pcardext.cpython-35m-x86_64-linux-gnu.so pcardext.cpython-36m-x86_64-linux-gnu.so
sudo cp pycurl.cpython-35m-x86_64-linux-gnu.so pycurl.cpython-36m-x86_64-linux-gnu.so
sudo cp scanext.cpython-35m-x86_64-linux-gnu.so scanext.cpython-36m-x86_64-linux-gnu.so
一波操作完,“软件和更新”可以打开了,但是软件更新器,提示如下:
XXX
但是奇怪的是,点击确定后,会检查更新…不是很懂这波操作。
最后一点,建议大家也做了,刚开始没发现,后来安装TensorFlow的时候发现的问题,具体报错的原因:
ModuleNotFoundError: No module named 'gdbm'
解决办法是:
sudo cp /usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3.6/lib-dynload/_gdbm.cpython-36m-x86_64-linux-gnu.so
至此,目前遇到的坑就是这些。
因为ubuntu16.04上python3版本是3.5.2,而我又是强迫症,就想用python3.6,因此开始折腾起来,不得不说,坑有点多,所以把安装过程记录下来,避免更多人踩到和我一样的坑
1.首先是安装python3.6.5
安装命令为:
sudo add-apt-repository ppa:jonathonf/python-3.6sudo apt-get updatesudo apt-get install python3.6
安装完成后,我们输入python3.6验证下安装成功了没,如果如下图所示,则为安装成功。
XXX
但是,此时系统默认的python3还是python3.5.2,输入python3,显示如下:
XXX
此时,只要把python3.6的优先级设置的比python3.5高就行了,设置的命令如下:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2
查看设置的结果的命令为:
sudo update-alternatives --config python3
结果如下图所示:
XXX
说明python3.6的优先级已经比python3.5的高了,直接回车就可以了。
现在再输入python3,已经是python3.6.5了:
XXX
接下来升级pip3:
sudo apt-get install python3-pip #如果已经安装了pip3忽略这一条sudo pip3 install --upgrade pip
查看是否安装成功:
pip3 -V
不幸的事情发生了….
直接抛出错误:
ImportError: cannot import name main
经过一波搜索,找到了解决办法(感谢accumulate_zhang,博客地址:https://blog.csdn.net/accumulate_zhang/article/details/80269313),解决办法是修改pip3文件里的代码:
打开pip3文件,打开命令:
sudo gedit /usr/bin/pip3
把原来的
from pip import mainif __name__ == '__main__': sys.exit(main())
替换为:
from pip import __main__if __name__ == '__main__': sys.exit(__main__._main())
再次输入 pip3 -V,发现已经升级到最新版本了:
XXX
正当想万事大吉的时候,又出了问题,在启动器中无法双击打开终端(terminal)….,经过一波搜索,找到了解决方法。就是把python3.5中的一些依赖复制一份给3.6,解决办法是:
cd /usr/lib/python3/dist-packages/gi/sudo cp _gi.cpython-35m-x86_64-linux-gnu.so _gi.cpython-36m-x86_64-linux-gnu.sosudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so
此时完美的解决了终端无法打开的问题,但还有个小问题,发现软件更新器和“软件和更新”两个软件还是无法打开,这个没有找到解决方案,个人依葫芦画瓢,进入到 (ps.一般可以直接用命令 sudo apt-get update更新的,所以这一部分做不做都行,看个人)
cd /usr/lib/python3/dist-packages/
把里面和python3.5相关的全部复制了一遍,命令如下:
sudo cp apt_inst.cpython-35m-x86_64-linux-gnu.so apt_inst.cpython-36m-x86_64-linux-gnu.so
sudo cp brlapi.cpython-35m-x86_64-linux-gnu.so brlapi.cpython-36m-x86_64-linux-gnu.so
sudo cp _cffi_backend.cpython-35m-x86_64-linux-gnu.so _cffi_backend.cpython-36m-x86_64-linux-gnu.so
sudo cp cups.cpython-35m-x86_64-linux-gnu.so cups.cpython-35m-x86_64-linux-gnu.so
sudo cp cups.cpython-35m-x86_64-linux-gnu.so cups.cpython-36m-x86_64-linux-gnu.so
sudo cp cupsext.cpython-35m-x86_64-linux-gnu.so cupsext.cpython-36m-x86_64-linux-gnu.so
sudo cp _dbus_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_bindings.cpython-36m-x86_64-linux-gnu.so
sudo cp _dbus_glib_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_glib_bindings.cpython-36m-x86_64-linux-gnu.so
sudo cp hpmudext.cpython-35m-x86_64-linux-gnu.so hpmudext.cpython-36m-x86_64-linux-gnu.so
sudo cp pcardext.cpython-35m-x86_64-linux-gnu.so pcardext.cpython-36m-x86_64-linux-gnu.so
sudo cp pycurl.cpython-35m-x86_64-linux-gnu.so pycurl.cpython-36m-x86_64-linux-gnu.so
sudo cp scanext.cpython-35m-x86_64-linux-gnu.so scanext.cpython-36m-x86_64-linux-gnu.so
一波操作完,“软件和更新”可以打开了,但是软件更新器,提示如下:
XXX
但是奇怪的是,点击确定后,会检查更新…不是很懂这波操作。
最后一点,建议大家也做了,刚开始没发现,后来安装TensorFlow的时候发现的问题,具体报错的原因:
ModuleNotFoundError: No module named 'gdbm'
解决办法是:
sudo cp /usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3.6/lib-dynload/_gdbm.cpython-36m-x86_64-linux-gnu.so
至此,目前遇到的坑就是这些。