ubuntu16.04安装python3.6.5遇到的一些坑的记录

news/2024/7/2 1:20:07 标签: ubuntu16.04, python3.6

ubuntu16.04安装python3.6.5遇到的一些坑的记录

        因为ubuntu16.04上python3版本是3.5.2,而我又是强迫症,就想用python3.6,因此开始折腾起来,不得不说,坑有点多,所以把安装过程记录下来,避免更多人踩到和我一样的坑

1.首先是安装python3.6.5
    安装命令为:

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

安装完成后,我们输入python3.6验证下安装成功了没,如果如下图所示,则为安装成功。

<a class=python3.6" title="" />

但是,此时系统默认的python3还是python3.5.2,输入python3,显示如下:

python3.5

此时,只要把python3.6的优先级设置的比python3.5高就行了,设置的命令如下:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

查看设置的结果的命令为:

sudo update-alternatives --config python3

结果如下图所示:

python3

说明python3.6的优先级已经比python3.5的高了,直接回车就可以了。

现在再输入python3,已经是python3.6.5了:

python3

接下来升级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 main
if __name__ == '__main__':
    sys.exit(main())

替换为:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

再次输入 pip3 -V,发现已经升级到最新版本了:

pip3

正当想万事大吉的时候,又出了问题,在启动器中无法双击打开终端(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.so
sudo 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

一波操作完,“软件和更新”可以打开了,但是软件更新器,提示如下:

但是奇怪的是,点击确定后,会检查更新…不是很懂这波操作。

最后一点,建议大家也做了,刚开始没发现,后来安装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

至此,目前遇到的坑就是这些。


http://www.niftyadmin.cn/n/967071.html

相关文章

flask with gae开发小结

最近因为要重写之前发布在GAE上的一个博客&#xff0c;又回顾了一下python&#xff0c;同时&#xff0c;因为用的flask&#xff0c;gae等等&#xff0c;一道写一些小总结&#xff0c;供日后查阅。 1&#xff0c; slugify 其实这个问题可以不考虑&#xff0c;只要你愿意用中文做…

新手必看,学习Linux重要八招

嵌入式Linux系统开发学习步骤&#xff0c;深圳嵌入式Linux培训高薪一路相伴最近在嵌入式论坛上经常遇到一些嵌入式linux初学者在询问&#xff1a;嵌入式Linux如何入门&#xff1f;嵌入式Linux开发都需要学习什么&#xff1f;等等。其实针对这类的问题主要还是因为大家对自己的学…

源码分析教程5部曲之2——C标准库概览-杨振平-专题视频课程

源码分析教程5部曲之2——C标准库概览—4228人已学习 课程介绍 源码分析教程5部曲之2——C标准库概览课程收益源码分析教程5部曲之2——C标准库概览讲师介绍杨振平 更多讲师课程专注于微软System Center和微软公有云&#xff0c;私有云系列产品&#xff0c;主要使用C#,.NET和…

ubuntu16.04+GTX750ti+python3.6.5配置cuda9.0+cudnn7.05+TensorFlow-gpu1.8.0

ubuntu16.04GTX750tipython3.6.5配置cuda9.0cudnn7.05TensorFlow-gpu1.8.01、首先是安装python3.6.5 关于python3.6的安装&#xff0c;在前面一篇博客写过了&#xff0c;请直接转前一篇博客&#xff0c;ubuntu16.04安装python3.6.5遇到的一些坑的记录。一定要把前一篇博客…

Apache Replication主从复制同步机制实践

&#xfeff;&#xfeff;Apache Replication 主从复制同步机制实践1.两台server都安装Apacheapt-get install apache22.两台server都安装Rsyncapt-get install rsync3.在ServerA使用cron做计划crontab -e进入编辑模式&#xff0c;然后输入下面内容&#xff0c;代表每5分钟会执…

大盘反弹在即?

&#xfeff;&#xfeff;大盘反弹在即&#xff1f;早上大盘涨得不错哈&#xff0c;大盘反弹在即&#xff1f;

version 1.5.2-04 of the jvm is not suitable for this product. version:1.6 or greater is required

这里仅仅说明一个可能造成该问题的解决办法&#xff0c;也是我遇到的原因。 这句话的意思是说&#xff0c;eclipse须要至少1.6版本号或以上的JVM ,而你仅仅有1.5.2版本号的JVM。想想就认为非常奇怪&#xff0c;我装的但是JDK1.7&#xff0c;怎么可能出现这样的问题。然后cmd执行…

ALV前导零的问题

ALV的IT_FIELDCAT参数中L_ZERO 选项置位的话&#xff0c;对NUM类型的前导0是可以输出的&#xff0c;但是有个很重要的前提条件&#xff0c;NO_ZERO不可以置位&#xff0c;否则L_ZERO是失效的。转载于:https://www.cnblogs.com/caizjian/p/3760720.html