這個(gè)案例告訴我們,千萬不要動系統(tǒng)自帶的 Python,Win系統(tǒng)除外
文 | fanzhenyu 出處 | http://fanzhenyu.cn/
由于無知,卸載 Ubuntu 自帶的 python3 引發(fā)慘案,謹(jǐn)記,深刻反思。
由于實(shí)驗(yàn)需要使用 Python3.6 以上版本,于是決定卸載 Python3.5。
# 卸載 python3.5
$ sudo apt-getremove python3.5
沒用,終端輸入 python3 還是可以使用。于是,網(wǎng)上查找卸載python3.5的方法:
# 卸載 python3.5 及其依賴
$ sudo apt-getremove --auto-remove python3.5
# 清除 python3.5
$ sudo apt-getpurge python3.5
or
$ sudo apt-getpurge --auto-remove python3.5
接下來,終端輸入 python3 依然還是可以使用。
# 刪除鏈接
sudo rm /usr/bin/python3
然后,突然發(fā)現(xiàn)側(cè)邊菜單欄變灰,感覺不對勁,重啟。然后,側(cè)邊菜單欄不見了,右鍵連打開終端的選項(xiàng)都沒有了。
于是,查找解決方案:
# 切換到命令行模式
ctrl+alt+t
# 失敗,再次嘗試
ctrl+alt+F1
# 成功
$ sudo apt install -f
# 重新安裝桌面
$ sudo apt-get-f install ubuntu-minimal ubuntu-standard ubuntu-desktop
# 重啟
$ sudo reboot
重啟后,菜單欄又出現(xiàn)了。但是,終端依然沒有。可以在 xterm 或者 中嘗試安裝:
$ sudo apt install gnome-terminal
但是,一般是不起作用的,還是打不開。由于系統(tǒng)中很多軟件都是依賴 python3,所以卸載了 python3 導(dǎo)致了系統(tǒng)崩潰。即使安裝了 python3.6+ 并設(shè)置了 python3 的軟連接,依然不行。
可以嘗試重裝 python3.5,然后設(shè)置 python3 軟連接。也可以嘗試以下方法:
https://blog.csdn.net/tao_627/article/details/91042809
https://blog.csdn.net/qs521/article/details/98945938
慘案發(fā)生后,即使菜單欄回來了,終端或許也能打開了,但是使用 apt 安裝軟件一直報(bào) dpkg 的錯(cuò)誤,找了很多方法也沒有解決,所以還是決定重新裝系統(tǒng)了。
正確的方式就是不要輕易刪除 python3 及其依賴。特別是不要刪除依賴。在 Ubuntu16.04 中修改 python3 指向 3.6+ 版本以后,某些軟件會無法使用,比如終端,需要使用上面連接的方法進(jìn)行相應(yīng)的處理。
這里編程派更推薦的方案是通過 pyenv 安裝 3.6+版本。
安裝 Python3.6+ 以上版本的正確姿勢:
# 從官網(wǎng)下載對應(yīng)版本的源碼
https://www.python.org/downloads/source/
# 解壓
$ tar -zxvf xxxxx
$ cd xxxx
# 創(chuàng)建安裝目錄
$ sudo mkdir -p /usr/local/python3
# 配置、編譯、安裝
$ ./configure --preifx=/usr/local/python3 --enable-optimizations
$ make
$ sudo make install
安裝以后,不修改 python3 的指向,可以為 python3.6+ 版本指定不同的鏈接名:
# 添加 python37 的軟鏈接
$ ln -s /usr/local/python3/bin/python3.7/usr/bin/python37
# 添加 pip3 的軟鏈接(這樣pip3就是python3.7專用的,也可以起名為 pip37,不影響python3.5的pip3)
$ ln -s /usr/local/python3/bin/pip3.7/usr/bin/pip3
檢測版本,查看是否成功:
$ python37 -V
$ pip3 -V
重新安裝系統(tǒng)、軟件、搭建實(shí)驗(yàn)環(huán)境,真的是心累啊。謹(jǐn)記,以后不要隨便卸載系統(tǒng)自帶軟件,特別是不要相信某些博客寫的徹底清除xxx及其依賴的操作。
回復(fù)下方「關(guān)鍵詞」,獲取優(yōu)質(zhì)資源
回復(fù)關(guān)鍵詞「 pybook03」,立即獲取主頁君與小伙伴一起翻譯的《Think Python 2e》電子版
回復(fù)關(guān)鍵詞「入門資料」,立即獲取主頁君整理的 10 本 Python 入門書的電子版
回復(fù)關(guān)鍵詞「m」,立即獲取Python精選優(yōu)質(zhì)文章合集
回復(fù)關(guān)鍵詞「book 數(shù)字」,將數(shù)字替換成 0 及以上數(shù)字,有驚喜好禮哦~
題圖:pexels,CC0 授權(quán)。
[TOC]
第一步:安裝wsl
第二步:安裝wsl terminal
第三步:更新root用戶的密碼
第四步:更換軟件源(apt源和pip源)
第五步:安裝zsh
第六步:安裝Vim plug和YouCompleteMe
第七步:編譯YCM
第八步:配置YCM
第九步 python和pip配置
第十步 pypy3安裝配置(如果不使用pypy請?zhí)^)
第十一步 使用virtualenvwrapper虛擬環(huán)境
第十二步 Vim語法檢查和格式化代碼
第十三步 安裝MariaDB數(shù)據(jù)庫
第十四步:(僅對本人有效)修改.vimrc,添加molakai主題
WSL(Ubuntu)將Ubuntu和Win10無縫連接起來,讓開發(fā)人員可以不使用虛擬機(jī),就輕松地在同一個(gè)系統(tǒng)中使用win10和Ubuntu,你可以用它代替Cywin32和babun.
最新版win10(18年3月更新)
在win10的設(shè)置中打開更新和安全,打開針對開發(fā)人員選項(xiàng)
然后在程序和功能中打開Linux子系統(tǒng)。
重啟計(jì)算機(jī)后,打開應(yīng)用商店搜索下載ubuntu18.04
舊版的win10或者離線安裝
參考下面的內(nèi)容安裝bash。
http://www.cnblogs.com/VAllen/archive/2017/04/03/BashOnWindowsDownloadAndInstallError.html
推薦選擇16.04的ubuntu。
添加ubuntu到快速訪問
如果你需要經(jīng)常在win10資源管理器對ubuntu的文件進(jìn)行操作,那么在C盤搜索rootfs這個(gè)文件夾,這就是ubuntu在win10上的儲存位置。
將rootfs文件夾拖放到資源管理器的快速訪問。(你也可以添加其下的/home/你的用戶文件夾)
獲取權(quán)限
直接在win10資源管理器操作ubuntu的文件可能是無效的,這是因?yàn)閣in10的默認(rèn)用戶并不是超級管理員,對ubuntu的權(quán)限是只讀的。
你需要取得rootfs文件夾的所有權(quán)限。(可以使用“鼠標(biāo)管家”這個(gè)軟件,添加菜單,管理員取得所有權(quán)限)
wsl-terminal是一個(gè)很好用的WSL終端。
下載WSL:
https://github.com/goreliu/wsl-terminal/releases
下載失敗請?jiān)囋囈郧暗陌姹?/p>
在鼠標(biāo)右鍵添加Open WSL Here
:
在wsl程序目錄下,有個(gè)tools目錄,運(yùn)行其中的1-add-open-wsl-terminal-here-menu。(刪除則運(yùn)行1-remove開頭的腳本)
注意:最新版windows需要把wsl-terminal安裝在非C盤
桌面點(diǎn)擊鼠標(biāo)右鍵,選擇Open WSL Here
打開Bash。
更新root密碼:
sudo passwd
這一步需要輸入你在下載ubuntu后建立的用戶密碼
系統(tǒng)默認(rèn)的apt源是國外的,下載軟件速度慢,python的pip源也很慢,我們都換成阿里云的源。
更換apt源:
cd /etc/apt/sudo cp sources.list sources.list.bak && sudo vim sources.list
刪除其中所有內(nèi)容,替換成:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiversedeb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
sudo apt updatesudo apt upgrade
修改pip源:
創(chuàng)建pip配置文件:mkdir ~/.pip && vi ~/.pip/pip.conf
在打開的vim中輸入下文并保存:
[global]trusted-host=mirrors.aliyun.comindex-url=http://mirrors.aliyun.com/pypi/simple/
zsh能讓你通過鍵盤的上鍵,查找以前輸入的命令。
例如,你可以輸入sudo
然后按向上鍵,就會出現(xiàn)以前輸入的以sudo
開頭的命令。
安裝zsh:sudo apt -y install zsh
安裝oh-my-zsh:sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
讓wsl-terminal默認(rèn)啟動zsh:
在wsl-terminal安裝目錄的/etc中,修改wsl-terminal.conf中相應(yīng)的部分為
;shell=/bin/bashshell=/bin/zsh
如果提示文件只讀,采取第一步中的獲取權(quán)限
Vim plug是vim插件管理工具,YCM是很好用的C、python代碼補(bǔ)全工具,也支持Go、Rust等其他語言。
下載Vim Plug:curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
在vimrc中添加安裝配置
vi ~/.vimrc
在其中添加
" Specify a directory for pluginscall plug#begin('~/.vim/plugged')" Make sure you use single quotesPlug 'jiangmiao/auto-pairs'Plug 'davidhalter/jedi-vim', {'for': 'python'}Plug 'Valloric/YouCompleteMe', {'for': 'python'}"可以添加已經(jīng)手動安裝的插件"Plug '~/.vim/bundle/YouCompleteMe'" Initialize plugin systemcall plug#end()
保存退出,并進(jìn)入vi
vi
按下:
鍵進(jìn)入命令行,輸入
PlugInstall
注意:
YCM的python補(bǔ)全依賴jedi-vim
因?yàn)閅CM包有200多M,所以需要下載很久。
安裝完成后提示YCM server錯(cuò)誤,這是正常的,因?yàn)閥cm需要手工編譯出YCM core庫。
安裝YCM編譯需要的依賴sudo apt -y install cmake build-essential python3-dev
切換到Y(jié)CM目錄:cd ~/.vim/plugged/YouCompleteMe
更改編譯使用python3(使用python2.7時(shí)跳過本步驟):vi ./install.py
把第一行末尾的python改為python3
編譯YCM core:./install.py
參考:
vim安裝YouCompleteMe插件,與python補(bǔ)全插件jedi-vim
YouCompleteMe配置后才能發(fā)揮出它強(qiáng)大的功效。
在vimrc中設(shè)置YCM使用python3支持:
"python版本設(shè)置,使用python2.7時(shí)去掉末尾的數(shù)字3let g:ycm_python_binary_path='/usr/bin/python3'" 語法關(guān)鍵字補(bǔ)全let g:ycm_seed_identifiers_with_syntax=1"從第2個(gè)鍵入字符就開始羅列匹配項(xiàng)let g:ycm_min_num_of_chars_for_completion=2"最小候選標(biāo)識符長度let g:ycm_min_num_identifier_candidate_chars=5"按下Ctrl+空格直接彈出所有類和函數(shù),要先關(guān)閉系統(tǒng)中的輸入法切換快捷鍵let g:ycm_key_invoke_completion='<C-Space>'"配置文件路徑let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'"把ycm識別的標(biāo)識符和語法關(guān)鍵字放在一起let g:ycm_seed_identifiers_with_syntax=1"注釋和字符串中的文字也會被收入補(bǔ)全,默認(rèn)關(guān)閉let g:ycm_collect_identifiers_from_comments_and_strings=1"字符串輸入補(bǔ)全,字符串中輸入.加字母時(shí)會引發(fā)錯(cuò)誤,默認(rèn)開啟let g:ycm_complete_in_strings=1
不同于很多vim插件,YCM需要有配置。在vim啟動后,YCM會找尋當(dāng)前路徑以及上層路徑的.ycm_extra_conf.py。在~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/中提供了默認(rèn)的模板。
復(fù)制配置文件:
cp ~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
修改默認(rèn)python3
sudo ln -s /usr/bin/python3 /usr/bin/pythonwget bootstrap.pypa.io/get-pip.py
安裝pip
sudo python get-pip.py
下載pypy3并解壓
到pypy官網(wǎng)下載pypy3.6-v7.0.0-linux64.tar.bz2,然后用下面的命令解壓
tar -jxvf pypy3.6-v7.0.0-linux64.tar.bz2
解壓命令詳解
解壓后把文件夾命名為pypy3
移動pypy3到/usr/local/lib
sudo mv pypy3 /usr/local/lib/
建立軟鏈接,使其可執(zhí)行
sudo ln -s /usr/local/lib/pypy3/bin/pypy3 /usr/bin/pypy
給pypy安裝pip
sudo pypy get-pip.pysudo ln -s /usr/local/lib/pypy3/bin/pip /usr/bin/pipp
注意:你也可以使用類似pip-pypy的命令來代替pipp,這只是我個(gè)人習(xí)慣
通常不同的項(xiàng)目會使用不同的庫版本,虛擬環(huán)境能讓你免弄壞系統(tǒng)環(huán)境的風(fēng)險(xiǎn)。virtalenvwrapper基于virtualenv,但是更方便。
安裝virtualenvwrapper
sudo pip install -U virtualenvwrapper
這會自動安裝依賴包virtualenv。
打開zshrc,添加環(huán)境變量等后,重啟zsh終端
vi ~/.zshrcexport PATH=/usr/local/lib/pypy3/bin:$PATHexport VIRTUALENVWRAPPER_PYTHON=/usr/local/lib/pypy3/bin/pypy3source /usr/local/lib/pypy3/bin/virtualenvwrapper.sh
新建虛擬環(huán)境
mkvirtualenv -p /usr/local/lib/pypy3/bin/pypy3 env1
默認(rèn)創(chuàng)建在~/. virtualenvs目錄下
-p指定了建立時(shí)使用的版本,如果你使用默認(rèn)的python3,可以使用mkvirtualenv env1
自動選擇虛擬環(huán)境,在zshrc末尾添加
workon env1
注:找不到virtualenvwrapper.sh,可以使用下面的命令查找腳本
sudo find / -path "/mnt" -prune -o -name virtualenvwrapper.sh -print
syntastic是語法檢查工具,它需要flake8的支持,yapf用來格式化python代碼。
安裝flake8語法檢查和yapf代碼格式化
sudo pipp install flake8 yapf
在vimrc中安裝syntastic
vimrc中添加
Plugin 'vim-syntastic/syntastic'"(下面的配置放在vundle安裝語句外)"vimrc設(shè)置flake8作為語法檢查器let g:syntastic_python_checkers=['flake8']"高亮錯(cuò)誤"let g:syntastic_enable_highlighting=1"自動跳轉(zhuǎn)到發(fā)現(xiàn)的第一個(gè)錯(cuò)誤或警告處"let g:syntastic_auto_jump=1"yapf自動格式化快捷鍵"autocmd FileType python nnoremap <F8> :0, $!yapf<CR><CR>
保存退出后,用PluginInstall命令安裝。
yapf僅對py文件有效, 如果出現(xiàn)語法錯(cuò)誤,可能會出現(xiàn)亂碼,這時(shí)按u鍵恢復(fù)py文件。
MariaDB是MySQL作者的新分支,CentOS已經(jīng)默認(rèn)使用MariaDB代替MySQL。
安裝
sudo apt -y install mariadb-server python3-pymysql
重啟數(shù)據(jù)庫,以創(chuàng)建sock文件
sudo service mysql restart
切換到root用戶,進(jìn)入數(shù)據(jù)庫
su -# 輸入密碼mysql
在mysql> 提示符下創(chuàng)建用戶
# 創(chuàng)建一個(gè)名為:admin 密碼為:admin 的用戶。insert into mysql.user(Host,User,Password) values("localhost","admin",password("admin"));# 刷新權(quán)限flush privileges;# 賦予admin用戶所有權(quán)限GRANT ALL ON *.* TO 'admin'@'localhost';# 刪除用戶及所有權(quán)限DROP USER account;
在~/.zshrc
中設(shè)置alias
alias db='sudo service mysql start'
注意:mariaDB需要手動創(chuàng)建數(shù)據(jù)庫
Ubuntu上mariaDB的默認(rèn)字符集為utf8mb4,兼容utf-8,不需要進(jìn)行更改。Centos需要設(shè)置charset。
復(fù)制配置好的vimrccp /mnt/d/.vimrc ~/.vimrc
使用舊版的.vimrc后,出現(xiàn)進(jìn)入vim沒有配色的情況。
這是因?yàn)関undle在vimrc中的配置是filetype off,關(guān)掉即可。
當(dāng)需要使用vundle的時(shí)候再打開這個(gè)選項(xiàng)。
復(fù)制vim的molokai配色
mkdir -p ~/.vim/colors && cp /mnt/d/molokai.vim ~/.vim/colors/molokai.vim
重啟服務(wù),大功告成。