Python虛擬環(huán)境最佳實踐
正文共:2059?字
預(yù)計閱讀時間:?6?分鐘
Python虛擬環(huán)境工具眾多,我也使用了眾多工具,最終還是選擇了Anaconda下的conda工具作為虛擬環(huán)境搭建的工具,在正式開始前,說一下我此前的環(huán)境。
系統(tǒng)環(huán)境:Mac Pro
使用pyenv作為python版本控制,下載了python2.7、python3.6、python3.5等版本,使用pyenv-virtualenv作為虛擬環(huán)境控制的插件工具,兩者其實挺好用的,然后我使用pyenv安裝了anaconda 4.4.0并再其下使用conda來創(chuàng)建虛擬環(huán)境,就是所謂的虛擬環(huán)境中的虛擬環(huán)境。
因為某些原因,將系統(tǒng)當前的pyenv相關(guān)的虛擬環(huán)境都刪除了,決定使用anaconda重新弄一套虛擬環(huán)境,完全用conda來管理,不再弄那么復(fù)雜。
首先去anaconda官網(wǎng)安裝,這里選擇安裝anaconda 5.5.0,其內(nèi)置python為python3.7,這個包的大小為600多M,解壓安裝后會占用磁盤2.2G,我也沒想到居然這么大,無奈。
安裝完后,就要配置一下環(huán)境變量,Mac下的環(huán)境變量比較復(fù)雜,環(huán)境變量由多個文件控制,這些文件的優(yōu)先級也不同,因為本人使用了zsh,所有處理在系統(tǒng)的環(huán)境變量配置文件中配置anaconda的路徑,還需要在zsh的環(huán)境變量配置文件中配置,這是必要的,不然zsh中也無法直接使用conda。
echo ". /Users/ayuliao/anaconda3/etc/profile.d/conda.sh" >> ~/.bash_profile
echo "conda activate" >> ~/.bash_profile
echo ". /Users/ayuliao/anaconda3/etc/profile.d/conda.sh" >> ~/.zshrc
echo "conda activate" >> ~/.zshrc
source .zshrc
source .bash_profile
具體的路徑需要根據(jù)自己的路徑來確定。
因為本地不再使用Mac自帶的命令行,所以.bash_profile文件不用寫也沒問題,只使用zsh,還有需要提及的就是 echo"conda activate">>~/.zshrc在conda 4.4之后支持,此前的將conda引入PATH的方法變得不再推薦。
這樣就可以全局使用conda了,首先使用conda來創(chuàng)建一個虛擬環(huán)境
conda create -n tfpy36 python=3.6
創(chuàng)建完后,先來安裝一下TensorFlow,這里安裝1.9版本的,當前最新版為1.12,不得不說TensorFlow更新的很快。
pip ?install ?-i ?https://pypi.doubanio.com/simple/ ?--trusted-host pypi.doubanio.com ?--upgrade tensorflow==1.9
安裝完后,可以進入python交互環(huán)境測試是否可以導(dǎo)入,通常沒什么問題,然后我習慣性的安裝ipython與jupyter,帶來了問題。
ipython與jupyter都是在虛擬環(huán)境下安裝的,但進入ipython,發(fā)現(xiàn)是anaconda原本的python環(huán)境,即python3.7版本,此時無法通過ipython導(dǎo)入虛擬環(huán)境中安裝的TensorFlow,有點懵,接著嘗試jupyter,也是同樣的情況,回想使用pyenv安裝anaconda再在改anaconda下創(chuàng)建虛擬環(huán)境并安裝TF不同,在此前的環(huán)境中虛擬環(huán)境中安裝的ipython會被安裝在虛擬環(huán)境中,可以直接導(dǎo)入虛擬環(huán)境的TF。
這個問題應(yīng)該不少見,所以查了一下,anaconda為了避免你在不同的虛擬環(huán)境都每次都要安裝ipython或jupyter,將這些都安裝在了根環(huán)境,安裝 ipykernel解決問題,這個庫會為ipython或jupyter提供虛擬環(huán)境殼的支持。
conda install ipykernel
至此,整個環(huán)境搞定,conda除了可以使用python3,同時還可以使用python2,非常方便。
但還有可能在ipython可以使用不同版本的虛擬環(huán)境,但在jupyter無法使用不同版本的虛擬環(huán)境,此時就可以安裝
conda install nb_conda
這樣就可以直接進入jupyter選擇不同的虛擬環(huán)境了,如下圖:
刪除環(huán)境
conda remove -n tfpy36 --all
激活環(huán)境
source activate tfpy36
退出環(huán)境
source deactivate
小結(jié)
python中很多工具都可以進行版本控制與虛擬環(huán)境的控制,我使用個多種,但最總還是返璞歸真,使用anaconda提供的這套解決方案一勞永逸。
2018版的PyCharm本身也支持創(chuàng)建新項目時,在工作目錄創(chuàng)建相應(yīng)的python環(huán)境,但我個人通常不這么做,因為每個項目都創(chuàng)建一個python虛擬環(huán)境其實沒什么必要,只需要幾個主的python虛擬環(huán)境則可,比如做web的,就創(chuàng)建pyweb虛擬環(huán)境,以后web相關(guān)的開發(fā)都使用該虛擬環(huán)境,這樣方便管理。