当前位置:   article > 正文

Ubuntu1604 LTS ----源码安装python3.6.9_ubuntu安装python3.6.9

ubuntu安装python3.6.9

源码安装

  • 在linux系统中安装python3软件时,使用包管理器方式,有时并不能安装较新的python3版本;
  • 此时可以使用源码安装;从官网下载源码包。
  • 安装python3依赖
apt install gcc patch libffi-devel python3-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite3 sqlite3-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
  • 1
  • 配置
# 解压
tar -zxvf python3.6.9.tar.gz -C /home/laufing
# 创建安装目录,并配置
mkdir /usr/local/python3
cd python3.6.9
./configure --prefix=/usr/local/python3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 编译,安装
make && make install 
  • 1
  • 配置环境变量
vim /etc/profile

export PATH=/usr/local/python3/bin:$PATH

# source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • python3多版本管理
# 安装
update-alternatives --install /bin/python3 python3 /usr/local/python3/bin/python3.6 1
# 显示
update-alternatives --display python3
# 选择版本
alternatives --set <name> <true-path>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 配置源镜像
pip3 config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/simple
pip3 config set global.trusted-host mirrors.tuna.tsinghua.edu.cn
  • 1
  • 2

 

  • 查看python3的所有文件路径
whereis python3

# 卸载python3
rpm -qa | grep -iE "python3" | xargs rpm -ev --allmatches --nodeps
whereis python3 | xargs rm -rfv
  • 1
  • 2
  • 3
  • 4
  • 5

安装后的问题

若python3相关的依赖没有安装或者安装失败,则会有如下问题:

$ python3
>>>import ssl    # 失败则安装openssl

>>>import sqlite3 
# no module named _sqlite3 
# 失败,安装sudo apt-get install sqlite3 sqlite3-devel

>>>import bz2 
#失败,安装sudo apt-get install libbz2-devel

>> import ctypes
# no module named _ctypes
# 安装 libffi-devel 
# no module named readline
# 安装 readline-devel ncurses-devel

>>>import lzma  #失败,解决sudo apt-get install liblzma-dev

>>>import tkiner 
#失败,sudo apt-get install tk-devel tcl-devel libX11-devel
#
#然后重新安装
cd Python-3.6.9
sudo ./configure --with-ssl --enable-loadable-sqlite-extensions 
sudo make
sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

python3.6.9的坑

安装完3.6.9后,使用software-properties-gtk 查看状态,发现如下问题:
在这里插入图片描述
最典型的影响就是,系统设置中文时,点击Language support 无响应。如图:
在这里插入图片描述

下面开始解决该问题

  1. 解决apt_pkg问题
lauf@master:~$ cd /usr/lib/python3/dist-packages
lauf@master:/usr/lib/python3/dist-packages$ sudo apt-get install python3-apt --reinstall

lauf@master:/usr/lib/python3/dist-packages$ sudo cp apt_pkg.cpython-35m-x86_64-linux-gnu.so apt_pkg.cpython-36m-x86_64-linux-gnu.so

#再次执行如下
lauf@master:/usr/lib/python3/dist-packages$ software-properties-gtk
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

已经解决apt_pkg问题:
1)输入命令行software-properties-gtk 再无apt_pkg问题
2)ipython3下输入import apt_pkg 正常,如下:
在这里插入图片描述
但是执行software-properties-gtk出现了新问题:
在这里插入图片描述
2. 解决_dbus_bindings

lauf@master:/usr/lib/python3/dist-packages$ sudo cp _dbus_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_bindings.cpython-36m-x86_64-linux-gnu.so
lauf@master:/usr/lib/python3/dist-packages$ ls _dbus_glib_*
_dbus_glib_bindings.cpython-35m-x86_64-linux-gnu.so

lauf@master:/usr/lib/python3/dist-packages$ sudo cp _dbus_glib_bindings.cpython-35m-x86_64-linux-gnu.so _dbus_glib_bindings.cpython-36m-x86_64-linux-gnu.so 

lauf@master:/usr/lib/python3/dist-packages$ python3
Python 3.6.9 (default, Sep  2 2021, 07:39:18) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dbus
>>> exit()
#成功解决
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

但是执行software-properties-gtk又出现如下问题:
在这里插入图片描述

  1. 解决_gi问题
lauf@master:/usr/lib/python3/dist-packages/gi$ sudo cp _gi_cairo.cpython-35m-x86_64-linux-gnu.so _gi_cairo.cpython-36m-x86_64-linux-gnu.so

lauf@master:/usr/lib/python3/dist-packages/gi$ sudo cp _gi.cpython-35m-x86_64-linux-gnu.so  _gi.cpython-36m-x86_64-linux-gnu.so 
  • 1
  • 2
  • 3

再次运行,software-properties-gtk,出现如下界面,则表示解决成功。
在这里插入图片描述
from softwareproperties.gtk.SoftwarePropertiesGtk import SoftwarePropertiesGtk

以上就是我在使用源码安装python3.6.9时碰到的问题,仅以此记录以下。
最终解决状态:

lauf@master:/usr/lib/python3/dist-packages$ ipython3
Python 3.6.9 (default, Sep  2 2021, 07:39:18) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.16.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import apt_pkg

In [2]: import dbus

In [3]: from softwareproperties.gtk.SoftwarePropertiesGtk import SoftwarePropertiesGtk
/usr/lib/python3/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py:40: PyGIWarning: Gdk was imported without specifying a version first. Use gi.require_version('Gdk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import GObject, Gdk, Gtk, Gio, GLib
/usr/lib/python3/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py:40: PyGIWarning: Gtk was imported without specifying a version first. Use gi.require_version('Gtk', '3.0') before import to ensure that the right version gets loaded.
  from gi.repository import GObject, Gdk, Gtk, Gio, GLib
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

但是这种解决只是临时的,只能在当前目录导入包。
还需要配置python的搜索路径

python导入包时的搜索顺序

  1. 当前目录
  2. PYTHONPATH,python的环境变量,永久修改
$ cd ~
$ sudo vim .bashrc
#末尾添加如下:
export PYTHONPATH=.:/usr/lib/python3/dist-packages:$PYTHONPATH

#保存退出
$ source .bashrc #是配置生效
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

当前增加的路径,每次导入包时,都会被搜索。使用这个方法解决python3.6.9的大坑问题。

  1. sys.path路径,可临时添加搜索路径
    这里增加的路径,只有在每次执行程序时有效,一旦退出,则会从sys.path中删除添加的路径。
>>>import sys
>>>sys.path.append("/usr/lib/python3/dist-packages")
>>>import apt_pkg  #此时会搜索该添加 的路径
  • 1
  • 2
  • 3

一旦退出程序,添加的路径也就GG了。

python3.6.9的gdbm问题

执行命令行:system-config-kdump,问题如下:
在这里插入图片描述
在ipython3中也是无法导入该包:
在这里插入图片描述

sudo apt-get install python3.6-gdbm

sudo cp /usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so /usr/lib/python3.6/lib/python3.6/lib-dynload/_gdbm.cpython-36m-x86_64-linux-gnu.so

未解决!!!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/570206
推荐阅读
相关标签
  

闽ICP备14008679号