Ubuntu16.04默認Python3.5升級Python3.6踩坑

  好久沒更新博客了,每天還是踩坑中。今天遇到第一個問題“ImportError: No module named 'secrets'”,導包是常見問題。這次的問題導致我又重裝了一次環境,不過這是一個新服務器。

  首先,分析下這個secrets庫。它是一個標準庫,要求是python版本>=Python3.6。那麼開始升級Python:

  第一種方法:

    使用Ubuntu的PPA(Personal Package Archives個人軟件包存檔),實質是更改source.list進行軟件的更新。這個方式第一次嘗試,比較之前的升級方式簡便,只需3步(ps:我沒成功,看下面也許你會成功)。那就開始嘗試了。

    1)添加倉庫

sudo add-apt-repository ppa:jonathonf/python-3.6
# 若添加失敗
sudo apt-get install python-software-properties  
sudo apt-get install software-properties-common

    2)更新軟件源list

sudo apt-get update
# 若出現E: Failed to fetch http://ppa.launchpad.net/.....   E: Some index files failed to download. They have been ignored, or old ones used instead

# 手動更新source.list
sudo vi /etc/apt/sources.list
# 檢查下有沒有ppa,有的話註釋掉那一行;沒有的話,加上下面的這一行
deb http://ppa.launchpad.net/q-quark/equalx/ubuntu xenial main


# 當然更新源列表的時候很快,可能沒注意這幾行報錯,接着下一步安裝Python3.6也會報其他錯

    3)安裝Python3.6

sudo apt-get install python3.6


# 若報錯E: Unable to locate package python3.6
# E: Couldn't find any package by glob 'python3.6'
# E: Couldn't find any package by regex 'python3.6'
# 當然,這是上一步更新軟列表沒有成功
# 到這了,是否該放棄這種方法呢?找到了ppa的一個傳送門:https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa

 

  第二種方法:

    使用老方法,下載安裝包,編譯。

    1)安裝一些依賴包

sudo apt-get install -y wget

sudo apt-get install make

sudo apt-get install -y gcc


sudo wget http://www.zlib.net/zlib-1.2.11.tar.gz
sudo tar -xzvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
sudo ./configure
sudo make all
sudo make install
cd ..


sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install -y build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install -y build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install -y zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install -y libssl-dev openssl
sudo apt-get install libffi-dev

    2)安裝Python3.6

sudo wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
sudo tar -xzvf Python-3.6.5.tgz
cd Python-3.6.5
sudo ./configure
sudo make all
sudo make install

    3)創建軟鏈

# 移除舊的軟鏈
sudo rm -rf /usr/bin/python3
sudo rm -rf /usr/bin/pip3

# 創建新的,因爲安裝的時候沒有指定安裝路徑,默認安裝到/usr/local/bin/
sudo ln -s /usr/local//bin/python3.6 /usr/bin/python3
sudo ln -s /usr/local/bin/pip3.6 /usr/bin/pip3

# 驗證指向是否是python3.6
python3 -V
pip3 -V

  lsb_release問題:

  裝virtualenv後,進入沙盒環境pip list(ps:沙盒環境就不需要再pip3,pip即可),報了另外個問題:subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

# 更改該文件的shebang
sudo vi /usr/bin/lsb_release
# 第一行#!/usr/bin/python3 -Es 更改爲#!/usr/bin/python3.6 -Es
# 再次pip list成功

奶思~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章