天天看點

python 建立目錄_Python版本管理工具和虛拟環境版本管理工具--pyenv虛拟環境--virtualenv虛拟環境--anconda虛拟環境--pipenv

python 建立目錄_Python版本管理工具和虛拟環境版本管理工具--pyenv虛拟環境--virtualenv虛拟環境--anconda虛拟環境--pipenv

版本管理工具--pyenv

這個呢是一個python版本管理的包,你可以通過git直接下載下傳源碼,安裝方法裡面都有https://github.com/pyenv/pyenv git位址,下載下傳下來,然後一步一步跟着做就好了.

簡單來看一下幾個路徑含義

  1. ~/.pyenv/shims/

這裡面存放的python指令,是我們在終端輸入python時候執行的,我們可以把PATH列印一下,可以看出,這個路徑的指令是在最前面的.我們輸入python後,pyenv會根據我們設定的去找真正要執行的python指令

  1. ~/.pyenv/versions/

這個目錄裡面存放的就是我們安裝的python版本.

注意:如果我們安裝時候特别慢,不要着急.我們可以把終端列印出來的位址,放在浏覽器裡,然後下載下傳下來,把下載下傳的檔案移動到~/.pyenv/cache/下就可以.剛開始要自己建這個cache目錄的.

python版本設定有兩個指令,

  1. pyenv local 名稱:在目前目錄使用這個python版本
  2. pyenv global 名稱:将全局的python版本設定成這個版本

名稱我們可以通過pyenv versions來檢視,裡面會有一個system的名稱,這個是你機器原來的python版本.一般情況下我們都用local來針對某一個目錄設定python,全局還是用我們系統的.用local我們可以在目前目錄下找到一個.python_version的檔案.pyenv應該就是讀這個檔案,知道你在目前目錄要用什麼版本的python.

用過node的可能會發現,其實這個跟node的nvm差不多一樣的性質

虛拟環境--virtualenv

我最開始使用的虛拟環境是virtualenv,這個的用法,網上也有一大堆.簡單說一下吧.因為我現在很少用

安裝:pip install virtualenv建立:virtualenv env名稱進入虛拟環境:source env名稱/bin/activate退出虛拟環境:deactivate
           

進入環境,你就可以在裡面用pip install了.安裝的包就是在目前環境中..

虛拟環境--anconda

後來我看還有個anconda的包管理器,也能建立虛拟環境.這個也有很多安裝教程.

安裝:官網有教程,下載下傳下來運作就可以了建立:conda create -n env名稱 python=2.7進入:conda activate env名稱退出:conda deactivate
           

進入環境,你也可以在裡面安裝包,安裝包用的是anconda的指令:conda install 包.這裡面可能有一些包找不到,你也可以用pip install來安裝.

注意:用pip來安裝就有點坑,如果你本地機器上已經安裝了這個包了,那pip install就安裝不了,如果你pip install安裝的包跟你本機的版本不一樣,他會解除安裝了本機的包,然後重新在你的conda環境中新安裝一個包.這樣你本機就沒有這個包了.對于一個新機器來說,可能比較好吧,畢竟以後運作項目都在虛拟環境,但是對于一些有在本機環境運作項目的人來說,就不那麼友好,有可能你用着anconda,莫名其妙的本機就缺少包.當然你也可以再安裝.

虛拟環境--pipenv

後來,最近我又發現了一個pipenv這個.這個感覺比較好,

安裝:pip install pipenv建立:pipenv install --python=2.7進入:進入目錄,pipenv shell退出:deactivate
           

建立一個虛拟環境,存放在預設目錄下,我的預設目錄是~.local/share/下面,然後會在目前目錄建立一個Pipfile的檔案. 裡面記錄着你安裝的包.安裝包用pipenv install ,安裝的包,都會在Pipfile裡面記錄着,如果你目前目錄已經有Pipfile,你pipenv install,他就會建立一個跟目前目錄關聯的虛拟環境,然後安裝Pipfile中的包.裡面可以設定下載下傳包的源.以提高下載下傳速度.安裝完,會生成一個Pipfile.lock的檔案.裡面記錄着真實的下載下傳的包的一些資訊,當項目遷移的時候,把這幾個目錄一起,不管在哪裡,運作的環境都是一樣的.這也是我比較喜歡的一點.有點像node的package.json檔案的功能.

記錄一下,分享一下~~~

繼續閱讀