『壹』 python 包管理工具
Python之所以受歡迎不光是因為它簡單易學,更重要的是它有成千上萬的寶藏庫。這些庫相當於是已經集成好的工具,只要安裝就能在Python里使用。它們可以處理各式各樣的問題,無需你再造輪子,而且隨著社區的不斷更新維護,有些庫越來越強大,幾乎能媲美企業級應用。那麼這些工具庫怎麼下載安裝呢?它們被放在一個統一的「倉庫」里,名叫PyPi(Python Package Index),所有的庫安裝都是從這里調度。有了倉庫之後,還需要有管理員,pip就是這樣一個角色。
pip 是 Python 中的標准庫管理器,這意味著它是一個工具,用它可以來管理 Python 標准庫中其他的包,允許你安裝和管理不屬於 Python 標准庫的其它軟體包,其提供了對 Python 包的查找、下載、安裝、卸載等功能。總的來說,pip的Python第三方庫的大管家,搞懂它,會讓你省很多事。從Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本開始,pip默認包含在Python的安裝程序中,在安裝Python時將會自動被安裝,省事方便。
Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過以下命令來判斷是否已安裝:
如果你的 Python 環境沒有安裝 pip,則可以使用以下方法來手動安裝。pip 安裝文件下載: pypi.org/project/pip…
pip提供的命令不多,但是都很實用
pip命令默認使用的是國外的pypi鏡像(pypi.python.org),安裝慢不說,有時甚至會導致出現超時等網路問題,有時候為了安裝一個包,失敗重試安裝好幾次都不一定成功。所以,使用國內的pypi鏡像,亦即 切換 pip 源 ,這樣速度上更有保證,不失為一種加速pip安裝第三方包的好方法。常用的鏡像站有阿里雲、清華大學等。其中清華大學開源軟體鏡像站是每 5 分鍾同步一次的,比較推薦使用。阿里雲鏡像站的速度也非常快,這也是我現在在使用的。
切換切換 pip 源可以是臨時性的,也可以設置為默認。臨時性的,就是在安裝包時,通過pip命令的 -i 選項指定鏡像源即可。例如,臨時使用阿里雲鏡像站作為 pip 源,可以是這樣安裝:
如果每次安裝時都想要通過鏡像源來安裝,上面的辦法不免有些麻煩。我們可以修改pip的配置文件,將鏡像源寫入到 pip 配置文件中。 對於linux系統 ,修改 ~/.pip/pip.conf 文件 (沒有就創建一個文件夾及文件,文件夾要加「.」,表示是隱藏文件夾):
然後在文件中保存如下內容:
對於windows系統 ,在C:Users文件夾下的用戶目錄(例如如果當前用戶是Administrator則是C:UsersAdministrator)下創建pip文件夾,然後再在此文件夾下創建pip.ini文件,在文件中寫入一下內容:
配置完成後再通過 pip config list 查看pip配置。
我們經常會遇到這樣的開發需求,比如你手頭有多個開發項目,其中項目A要求用python3.7,項目B需要用python3.6,有要求項目A和項目B依賴包相互獨立,互不幹擾。為了滿足這樣的開發需求,我們需要在自己的電腦上安裝多個Python版本,並且項目之間進行環境隔離。因此,我們要想運行這些項目,在工作電腦上就要安裝不同版本的Python。 pyenv 是Python版本管理工具,通過系統修改環境變數來實現Python不同版本的切換,利用它可以在同一台電腦上安裝多個版本的Python,設置目錄級別的Python,還能創建和管理vitual python enviroments。而且所有的設置都是用戶級別的操作,不需要sudo命令。
首先安裝pyenv,如果你是Mac電腦,那麼推薦使用Homebrew來安裝。
要想升級pyenv,則可以執行:
pyenv安裝完成後,需要將$HOME/.pyenv/bin添加到PATH變數前面,這一步非常關鍵。
也可以採用手動安裝的方式,將pyenv檢出到你想安裝的目錄。
添加環境變數,將PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv命令的路徑。這里的 shell 配置文件(~/.bash_profile)依不同系統而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc
在使用 pyenv 之後使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統模塊產生沖突。使用 pip 安裝模塊之後,如果沒有生效,記得使用 pyenv rehash 來更新。
安裝完pyenv,可以安裝Python,首先查看可安裝的Python版本:pyenv install -l,接下來開始安裝Python
執行命令 pyenv versions 查看安裝結果。
可以看到,已經成功安裝了Python,安裝的位置在 /Users/dllwh/.pyenv。
可以看到,3.9.9 前面有一個星號,說明成功切換到了 3.9.9 版本,可以執行一下python來驗證。
Pipenv 是 Python 官方推薦的包管理工具,它綜合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 這一個工具來安裝、卸載、跟蹤和記錄依賴性,並創建、使用和組織你的虛擬環境。
如果你是Mac電腦,那麼推薦使用Homebrew來安裝和升級pipenv:
也可以通過pip來安裝和升級pipenv:
進入到項目目錄中,通過下面的指令為項目創建虛擬環境。
上面的操作,給pipenv_demo這個項目初始化了一個 Python 3.9.9 的虛擬環境,並在項目錄下生成一個項目依賴包文件 Pipefile。如果系統中沒有 3.9.8 版本的Python,pipenv 會調用 pyenv 來安裝對應的 Python 的版本。默認地,虛擬環境會創建在 ~/.local/share/virtualenvs目錄裡面。我們也可以通過 pipenv --venv查看項目的虛擬環境目錄。可以通過 pipenv --rm 刪除虛擬環境。
如果想更改虛擬環境的目錄,可以在 .bashrc 或 .bash_profile 中,設置環境變數WORKON_HOME,指定虛擬環境的目錄所在位置,比如想將虛擬環境放到~/.venvs目錄,則可以執行下面的命令。
如果希望在項目目錄下創建虛擬環境目錄(.venv),需要在 .bashrc 或 .bash_profile 中配置環境變數PIPENV_VENV_IN_PROJECT:
pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。
為項目安裝依賴包到虛擬環境中,使每個項目擁有相互獨立的依賴包,是非常不錯的Python的開發實踐。安裝依賴包到虛擬環境中的方法:
執行完上面的命令後,檢查一下是否安裝成功:
觀察項目的根目錄下,又多了一個 Pipfile.lock 文件。這兩個文件記錄了此項目的依賴包,這兩個文件的區別是 Pipfile 中安裝的包不包含包的具體版本號,而Pipfile.lock 是包含包的具體的版本號的。如果不想產生 Pipfile.lock 文件,在安裝依賴包的時候,加上 –skip-lock 選項即可。
在使用pipenv的時候,常常會安裝過程比較慢,這個是因為pipenv創建的 Pipfile 中默認的Pypi源是python官方的 pypi.python.org/simple。我們國內…
為了避免每次都要指定–pypi-mirror,我一般會在創建好Pipfile以後,將文件中 source 塊下的 url 欄位,設置為國內的 pypi 源,我推薦的是清華的Pypi源或者阿里源,具體設置如下:
如果是要刪除虛擬環境中的第三方包,執行:
用git管理項目時候,要把Pipfile和Pipfile.lock加入版本跟蹤。這樣clone了這個項目的同學,只需要執行:
就可以安裝所有的Pipfile中 [packages]部分列出來的包了,並且自動為項目在自己電腦上創建了虛擬環境。
上面的方法都是安裝Pipfile中列出來的第三方包的最新版本,如果是想安裝Pipfile.lock中固定版本的第三方依賴包,需要執行:
如果項目之前使用requirements.txt來管理依賴的,那麼使用pipenv安裝所有依賴可以採用類似pip的方法:
虛擬環境創建好了之後,就可以在裡面進行開發了。如果在命令行下開發,則在項目目錄下執行 pipenv shell ,就進入到了虛擬環境中,在這個環境中,已經包含安裝過的所有依賴包了,接下來就可以利用這些依賴包進行開發工作了。如果是用Pycharm進行開發,就更簡單了,直接用Pycharm打開項目即可。可以從Pycharm中的左側導航欄裡面看到External Libraries顯示的是虛擬環境中的Python解釋器了。
在虛擬環境中執行開發好的程序,有兩種方式,一種是前面提到的先執行pipenv shell進入到虛擬環境後,再執行python程序;另一種方式,則是執行pyenv run,比如在虛擬環境中執行基於pytest框架編寫的測試用例,只需要執行下面的命令即可:
作者:獨淚了無痕
鏈接:https://juejin.cn/post/7063699409703272485
『貳』 如何在vs2017管理anaconda的python包
使用conda
首先我們將要確認你已經安裝好了conda
配置環境
下一步我們將通過創建幾個環境來展示conda的環境管理功能。使你更加輕松的了解關於環境的一切。我們將學習如何確認你在哪個環境中,以及如何做復制一個環境作為備份。
測試Python
然後我們將檢查哪一個版本的python可以被安裝,以及安裝另一個版本的python,還有在兩個版本的python之間的切換。
檢查包
1)我們將羅列出安裝在我們電腦上的包
2)瀏覽可用的包
3)使用conda install命令來來安裝以及移除一些包
4)對於一些不能使用conda安裝的包,我們將在Anaconda.org網站上搜索
5)對於那些在其它位置的包,我們將使用pip命令來實現安裝。我們還會安裝一個可以免費試用30天的商業包IOPro
移除包、環境以及conda
管理conda:
檢查conda版本:
1
1
升級當前版本的conda
1
1
管理環境
創建並激活一個環境
使用」conda create」命令,後邊跟上你希望用來稱呼它的任何名字:
1
1
這條命令將會給Biopython創建一個新的環境,位置在Anaconda安裝文件的/envs/snowflakes
激活這個新環境
Linux,OS X:
1
1
Windows:
1
1
小技巧:
新的開發環境會被默認安裝在你conda目錄下的envs文件目錄下。你可以指定一個其他的路徑;去通過
conda create -h了解更多信息吧。
小技巧:
如果我們沒有指定安裝python的版本,conda會安裝我們最初安裝conda時所裝的那個版本的python。
列出所有的環境
1
1
* 注意:conda有時也會在目前活動的環境前邊加上號。**
切換到另一個環境(activate/deactivate)
為了切換到另一個環境,鍵入下列命令以及所需環境的名字。
Linux,OS X:
1
1
Windows:
1
1
如果要從你當前工作環境的路徑切換到系統根目錄時,鍵入:
- Linux,OS X:
1
1
Windows:
1
1
復制一個環境
通過克隆來復制一個環境。這兒將通過克隆snowfllakes來創建一個稱為flowers的副本。
1
1
通過
1
1
來檢查環境
刪除一個環境
如果你不想要這個名為flowers的環境,就按照如下方法移除該環境:
1
2
1
2
管理Python
安裝一個不同版本的python
現在我們假設你需要python3來編譯程序,但是你不想覆蓋掉你的python2.7來升級,你可以創建並激活一個名為snakes的環境,並通過下面的命令來安裝最新版本的python3:
1
1
檢查新的環境中的python版本
確保snakes環境中運行的是python3:
1
1
使用不同版本的python
為了使用不同版本的python,你可以切換環境,通過簡單的激活它就可以,讓我們看看如何返回默認版本
Linux,OS X:
1
1
Windows:
1
1
注銷該環境
當你完成了在snowflakes環境中的工作室,注銷掉該環境並轉換你的路徑到先前的狀態:
Linux,OS X:
1
1
Windows:
1
1
管理包
conda安裝和管理python包非常方便,可以在指定的python環境中安裝包,且自動安裝所需要的依賴包,避免了很多拓展包沖突兼容問題。
不建議使用easy_install安裝包。大部分包都可以使用conda安裝,無法使用conda和anaconda.org安裝的包可以通過pip命令安裝
使用合適的源可以提升安裝的速度
查看已安裝包
使用這條命令來查看哪個版本的python或其他程序安裝在了該環境中,或者確保某些包已經被安裝了或被刪除了。在你的終端窗口中輸入:
1
1
向指定環境中安裝包
使用Conda命令安裝包
我們將在指定環境中安裝這個Beautiful Soup包,有兩種方式:
- 直接指定-n 指定安裝環境的名字
1
1
* 提示:你必須告訴conda你要安裝環境的名字(-n bunies)否則它將會被安裝到當前環境中。*
激活bunnies環境,再使用conda install命令。
1
2
1
2
2.從Anaconda.org安裝一個包
如果一個包不能使用conda安裝,我們接下來將在Anaconda.org網站查找。
在瀏覽器中,去Anaconda資源官網。我們查找一個叫「bottleneck」的包,所以在左上角的叫「Search Anaconda Cloud」搜索框中輸入「bottleneck」並點擊search按鈕。
Anaconda.org上會有超過一打的bottleneck包的版本可用,但是我們想要那個被下載最頻繁的版本。所以你可以通過下載量來排序,通過點擊Download欄。
點擊包的名字來選擇最常被下載的包。它會鏈接到Anaconda.org詳情頁顯示下載的具體命令:
1
1
3. 通過pip命令來安裝包
對於那些無法通過conda安裝或者從Anaconda.org獲得的包,我們通常可以用pip命令來安裝包。
可以上pypi網
站查詢要安裝的包,查好以後輸入pip install命令就可以安裝這個包了。
我們激活想要放置程序的python環境,然後通過pip安裝一個叫「See」的程序。
Linux,OS X:
1
1
Windows:
1
1
所有平台:
1
1
提示:pip只是一個包管理器,所以它不能為你管理環境。pip甚至不能升級python,因為它不像conda一樣把python當做包來處理。但是它可以安裝一些conda安裝不了的包。
4. 文件安裝
如果真的遇到走投無路的境地,也就是上面這些方法通通不管用!!!那就只能下載源碼安裝了,比如exe文件(雙擊安裝)或者whl文件(pip安裝)等等。還有在github上找到源碼,使用python setup.py install命令安裝
Tips:不建議使用setuptools 的easy_install,非常不方便管理,也不好卸載
有些時候,Anaconda和pip下載的速度慢,訪問不穩定怎麼辦?換個源唄,清華大學的源就很不錯,當然啦,你可以自己google一些好用的源
對於包管理工具,了解這么多就夠了,比較喜歡追根究底的童鞋可以移步包管理工具解惑
**提示:
在任何時候你可以通過在命令後邊跟上-help來獲得該命令的完整文檔。
**
eg:
1
1
* 小技巧:*
很多跟在–後邊常用的命令選項,可以被略寫為一個短線加命令首字母。所以–name選項和-n的作用是一樣的。通過conda -h或conda –-help來看大量的縮寫。
移除包、環境、或者conda
如果你願意的話。讓我們通過移除一個或多個試驗包、環境以及conda來結束這次測試指導。
移除包
假設你決定不再使用商業包IOPro。你可以在bunnies環境中移除它。
1
1
移除環境
我們不再需要snakes環境了,所以輸入以下命令:
1
1
刪除conda
Linux,OS X:
移除Anaconda 或 Miniconda 安裝文件夾
1
1
OR
1
1
Windows:
去控制面板,點擊「添加或刪除程序」,選擇「Python2.7(Anaconda)」或「Python2.7(Miniconda)」並點擊刪除程序。
『叄』 python包管理工具pip download詳解
pip download的用法與install相似,只不過download只下載安裝包並不安裝到系統內,這里我們只講述以下幾個選項:--requirement、--no-deps、--dest。
這個選項指定下載文件中包含的安裝包,假如有個文件download.txt,內容如下:
當我執行以下命令時:
就會下載文件內的安裝包及其依賴,最後一行輸出如下:
這個選項告訴pip只下載指定的安裝包即可,無需下載依賴,如果我執行以下命令:
就只會下載文件內容中的3個安裝包,最後一行輸出如下:
在我們不指定這個選項時,pip默認把安裝包保存在當前工作目錄,我們可以通過這個選項指定安裝包的保存位置,如下命令:
就會把安裝包保存在當前目錄下的downloads子目錄中了。
『肆』 python包管理工具pip install詳解
pip install用來安裝python第三方庫,使用時有比較多的選項蔽穗仔祥,這里我們選幾個常用的來講解下,包括以下幾個: --requirement,--no-deps,--target,--user,--upgrade,--force-reinstall,--ignore-installed。
這個選項允許我們指定一個文件,pip會安裝此文件里指定的第三方庫,比如我的電腦上有個文件 requirements.txt,內容如下:
當我執行pip install -r requirements.txt時就會安裝上面的3個庫,輸出內容的最後兩行如下:
我們看到安裝的庫多於3個,那是因為pip也會同時安裝依賴,這個就是下面要講的。
這個選項告訴pip不安裝依賴,只安裝指定的庫,如果執行以下語句:
則會只安裝3個庫,最後兩行輸出如下:
這個選項指定安裝目錄,比如指定 --target /pip/install/directory 就會安裝到/pip/install/directory目錄。
這個選項指定安裝到特定目錄,linux上是 ~/.local/,windows上是 %APPDATA%Python。
當一個庫有新版本時,我們可以指定這個參數對其進行升級。
如果我們已經安裝過某個庫,再次安裝時不會重新安裝,這時指定 --force-reinstall 可以強制安裝。
這個選項告訴pip忽略已經安裝的庫,宏戚卜導致pip會覆蓋它們。這個選項與force-reinstall不同的是,如果某個庫已安裝,force-reinstall會先卸載再安裝,ignore-installed不會卸載會直接覆蓋。
『伍』 怎麼查看python安裝的依賴包
Python使用pip包管理器來安裝、刪除、管理軟體包,使用pip安裝軟體包會自動安裝包所依賴的其它包,而無需手動安裝。
最新版本的Python中已經默認安裝了pip包管理器,老版本的需要自己手動安裝。pip包管理器的使用方法如下:
依次點擊開始>運行,輸入cmd打開命令提示符
pip install 包名稱
通過以上兩步即可實現包的安裝,同樣在命令提示符下輸入:
pip list
可以查看所有已經安裝的包。
『陸』 Python包管理工具pip的安裝和使用
Python有兩個著名的包管理工具easy_install.py和pip。在Python2.7的安裝包中,easy_install.py是默認安裝的,而pip需要我們手動安裝。
方法1:利用常用curl獲取
>>後面是指定獲取的pip腳本的名字,也可以是curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
方法2:利用wget獲取,先要安裝wget
備註:看網上還有利用easy_install安裝pip,但是我嘗試了並沒有成功
原因是 Python.org sites 終止支持TLS1.0和1.1版本,TLS需要>=1.2
參考: https://stackoverflow.com/questions/49768770/not-able-to-install-python-packages-ssl-tlsv1-alert-protocol-version
主要命令:
所有命令中,最重要的兩個命令是install和uninstall。
pip支持四種方式安裝python包。
從PyPI安裝一個包
安裝一個全局區域的包,一般需要sudo許可權。在mac系統上,即使是管理員也無法安裝,自從OS X El Capitan及以後的版本包含了一套伍豎安全技術(System Integrity Protection簡稱為SIP)來防止惡意軟體修改系統保護區域。具體可參考SIP。因此,我們有時候需要將PyPI包安裝到用戶區,這個時候,可以用.
pip在升級軟體包之前會自動卸載舊的軟體包。
可以將所有需要安裝的包放入一個requirements.txt文件中,然後可以一次安枝知裝。requirements.txt 文件的每一行都要表明安裝的內容,而且盡量不要依賴文件中指定包的前後安裝順序。
從git安裝
從svn安裝
從一個分支安裝
還有很多其他的包安裝功能,但是上面的已經滿足了大部分需求。其他的請參考 文檔 。
pip uninstall可以卸載大部分的包,除了一下兩種情況
使用方式主要有兩種:
卸載單個包
卸載多個包
pip check用來驗證已安裝的包是否有兼容的依賴性問題。
上面的結果說明matplotlib包有兩個依賴包沒有安裝。
pip search用來腔搭大搜索名字或者摘要中包含搜索關鍵字的PyPI包。
選項只有一個,就是指定PyPI的url,默認url為 https://pypi.python.org/pypi
例如,search frida
以下兩者都可以用,結果同上。
pip list命令會按照字典序排列列舉已安裝的包,包括可編輯的包。
主要有如下選項:
輸出格式:
legacy:將要被廢棄
freeze
columns
json
當某些時候debug的時候,需要提供一個完整的python環境,python freeze提供了此功能,它能夠輸出機器上python環境的快照(所有已安裝的包)。
下面是freeze命令的選項:
輸出用戶區安裝的前5個安裝包:
pip show可以用來顯示每個包的具體信息。show命令只有一個選項 -f,用來顯示安裝包的文件列表。
$ pip show -f|--files packageName
更多命令請參考 文檔
pip默認的index-url是 https://pypi.python.org/pypi/ ,
為了提高速度,我們可以更改pip源為國內的阿里雲源。更改方法如下:
創建配置文件
添加阿里源
pip.conf內容如下:
『柒』 python3離線安裝第三方模塊及其依賴包
以管理員許可權啟動cmd命令窗口,執行pip命令安裝所需要的模塊。例如:
以管理員許可權啟動cmd命令窗口,執行以下命令打包pip第三方安裝包及安裝索引。
將 packages 文件夾和 requirements.txt 文件拷貝至離線機器任意同級目錄下,以管理員許可權啟動cmd命令窗口進入該目錄,執行下述命令進行離線安裝。
按照部署1、2、3導出外網機python環境list,可以批量安裝python第三方依賴。若只需安裝一個python包,可以使用下屬方法: