深圳seo網站優(yōu)化公司seo中介平臺
Python 包管理
概述
介紹
Python 有豐富的開源的第三方庫和包,可以幫助完成各種任務,擴展 Python 的功能,例如 NumPy 用于科學計算,Pandas 用于數(shù)據處理,Matplotlib 用于繪圖等。在開始編寫 Pytlhon 程序之前,可能需要安裝一些常用的Python庫,以便在編程過程中能夠輕松地使用它們。
為了方便地管理第三方庫和包,需要安裝一個 Python 包管理工具,例如 pip、conda 等。這些工具可以幫助安裝、升級和刪除 Python 包,能夠輕松地管理 Python 的依賴關系。
Anaconda、conda、pip、virtualenv 的區(qū)別
-
Anaconda
Anaconda 是一個包含 180+ 的科學包及其依賴項的發(fā)行版本。其包含的科學包包括:conda,numpy,scipy,ipython notebook 等。
-
conda
conda 是包及其依賴項和環(huán)境的管理工具。
適用語言:Python,R,Ruby,Lua,Scala,Java,JavaScript,C/C++,FORTRAN
適用平臺:Windows,macOS,Linux
用途:
-
快速安裝、運行和升級包及其依賴項。
-
在計算機中便捷地創(chuàng)建、保存、加載和切換環(huán)境。
如果需要的包要求不同版本的 Python,無需切換到不同的環(huán)境,因為 conda 同樣是一個環(huán)境管理器。僅需要幾條命令,就可以創(chuàng)建一個完全獨立的環(huán)境來運行不同的 Python 版本,同時可以繼續(xù)在常規(guī)的環(huán)境中使用常用的 Python 版本?!?/p>
conda 為 Python 項目而創(chuàng)造,但可適用于上述的多種語言。
conda 包和環(huán)境管理器包含于 Anaconda 的所有版本當中。
-
-
pip
pip 是用于安裝和管理軟件包的包管理器。
pip 適用語言:Python
Python 中默認安裝的版本:
- Python 2.7.9 及后續(xù)版本:默認安裝,命令為 pip
- Python 3.4 及后續(xù)版本:默認安裝,命令為 pip、pip3
pip 名稱的由來:pip 采用的是遞歸縮寫進行命名的。其名字被普遍認為來源于2處:
- “Pip installs Packages”(“pip 安裝包”)
- “Pip installs Python”(“pip 安裝 Python”)
-
virtualenv
virtualenv 是用于創(chuàng)建一個獨立的 Python 環(huán)境的工具。
解決問題:
- 當一個程序需要使用 Python 2.7 版本,而另一個程序需要使用 Python 3.6 版本,如果將所有程序都安裝在系統(tǒng)下的默認路徑,如:
/usr/lib/python2.7/site-packages
,當不小心升級了本不該升級的程序時,將會對其他的程序造成影響。 - 安裝程序或在程序運行時對其庫或庫的版本進行修改,都會導致程序的中斷。
- 在共享主機時,無法在全局
site-packages
目錄中安裝包。
virtualenv 將會為它自己的安裝目錄創(chuàng)建一個環(huán)境,這并不與其他 virtualenv 環(huán)境共享庫;同時也可以選擇性地不連接已安裝的全局庫。
- 當一個程序需要使用 Python 2.7 版本,而另一個程序需要使用 Python 3.6 版本,如果將所有程序都安裝在系統(tǒng)下的默認路徑,如:
pip 與 conda 比較
-
依賴項檢查
-
pip:
不一定會展示所需其他依賴包。
安裝包時或許會直接忽略依賴項而安裝,僅在結果中提示錯誤。
-
conda:
列出所需其他依賴包。
安裝包時自動安裝其依賴項。
可以便捷地在包的不同版本中自由切換。
-
-
環(huán)境管理
- pip:維護多個環(huán)境難度較大
- conda:比較方便地在不同環(huán)境之間進行切換,環(huán)境管理較為簡單
-
對系統(tǒng)自帶 Python 的影響
- pip:在系統(tǒng)自帶 Python 中包的更新/回退版本/卸載將影響其他程序。
- conda:不會影響系統(tǒng)自帶 Python。
-
適用語言
- pip:僅適用于 Python
- conda:適用于 Python(主要),R,Ruby,Lua,Scala,Java,JavaScript,C/C++,FORTRAN。
-
conda 與 pip、virtualenv 的關系
conda 結合了 pip 和 virtualenv 的功能。
conda 使用了一個新的包格式, pip 不能安裝和解析 conda 的包格式??梢允褂脙蓚€工具,但是它們是不能交互的,比如使用 pip 本地安裝 conda 的離線包。
pip(Python 包管理器)
介紹
- pip 是 Python 的官方包管理器,它隨 Python 的版本一起發(fā)布。當安裝 Python 時,pip 也會被安裝。
- 通過 pip 可以輕松地安裝和管理 Python 的不屬于 Python 標準庫的各種第三方庫(包),以便可以在項目中可以直接在代碼中引入并使用它們。
- pip 是一個命令行工具,可以直接在終端或命令提示符中使用。
基本使用命令
-
python 包管理
# 查看已安裝的包 pip list # 查看需要升級的庫 pip list -o# 安裝一個 python 包 pip install package_name # package_name:具體地包名 # 安裝特定版本的包 pip install package_name==version_number # 安裝本地包 pip install /path/to/package # /path/to/package:本地包路徑# pip的超時時間默認為15秒,如果下載速度過慢,可以使用以下命令設置超時時間為60秒 # 方式1:添加參數(shù)--default-timeout=60。# 方式:在配置里面[global]下添加timeout=60 pip install --default-timeout=60 package_name# 指定國內的源(阿里云)來安裝某個包 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple <package-name> # 注意:如果url是http的化,需要信任(因為未加密),可以通過下面兩個方法解決 # 方式1:安裝時加入 --trusted-host 臨時參數(shù) pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com/simple package_name # 方式2:在 pip.conf 中加入 trusted-host 選項,該方法是一勞永逸 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com# 升級包 pip install --upgrade package_name # 升級pip pip install --upgrade pip# 卸載包 pip uninstall package_name# 安裝包的依賴項 pip install package_name[dependencies]# 驗證已安裝的庫是否有兼容依賴問題 pip check package_name# 下載某個包到指定的路徑下(不安裝) pip download package_name -d "某個路徑" # 查看包的詳細信息 pip show package_name# 導出已安裝的包列表 pip freeze > requirements.txt # 從requirements.txt文件中安裝包 pip install -r requirements.txt
-
下載源管理
# 新增全局下載源。國內最好更換pip的源,以便更快地下載包 pip config set name value # 示例:清華源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple# 刪除全局下載源 pip config unset name# 查看pip下載的安裝包的默認路徑 python -m site# 顯示pip的配置列表 pip config list # 顯示pip文件的所有存儲位置 pip -v config list # 輸出的不同的目錄對應不同的參數(shù) --global(全局)、--user(用戶) 、--site
-
其他命令
# 清理緩存。pip安裝包的時候,會下載并緩存一些包以便后續(xù)使用,不會自動刪除,這可能會占用磁盤空間,需要手動刪除 pip cache purge# 查看pip版本 pip --version pip -V
pip 的常規(guī)參數(shù)選項
-
-r,--requirement <file>
:從給定的需求文件中進行安裝。此選項可多次使用。 -
-c,--constraint <file>
:使用給定的約束文件約束版本。此選項可多次使用。約束文件相對于需求文件更加的智能,約束文件與需求文件在一個關鍵方面不同:將包放入約束文件不會導致安裝包,而需求文件將安裝列出的所有包。常用來放某個包的依賴項。
-
--no-deps
:不要安裝程序包依賴項 -
--pre,pip
:查找包括預發(fā)布和開發(fā)版本。默認情況下,pip 只查找穩(wěn)定版本。 -
-e,--editable <path/url>
:從本地項目路勁或 VCS url 以可編輯模式(即setuptools 開發(fā)模式)安裝項目。 -
-t,--target <dir>
:將軟件包安裝到<dir>
,默認情況下,這不會替換<dir>
下已經存在的文件或文件夾 -
--platform <platform>
:僅使用與<platform>
兼容的輪子。默認為運行系統(tǒng)的平臺。多次使用此選項可指定目標解釋器支持的多個平臺 -
-U,--update
:將所有指定的軟件包升級到最新的可用版本。依賴項的處理取決于所使用的升級策略。 -
--upgrade-strategy <upgrade_strategy>
:確定應如何處理依賴項升級。兩種模式:
- “eager” :無論當前安裝的依賴項版本是否滿足升級包的要求,都會升級依賴項
- “only-if-needed” :僅在不滿足升級包的要求時升級
-
--force-reinstall
:重新安裝所有軟件包,即使它們已經是最新的 -
-I,--ignore-installed
:忽略已安裝的軟件包,覆蓋它們。如果現(xiàn)有軟件包的版本不同或安裝了不同的軟件包管理器,這可能會破壞你的系統(tǒng)。
-
--compile
:將 python 源文件編譯為字節(jié)碼 -
--no-compile
:不要將 python 源文件編譯為字節(jié)碼 -
--no-binary <format_control>
:不要使用二進制軟件包。<format_control>
可以是:- all:禁用所有二進制軟件包
- none:清空之前提供的軟件包,或者使用指定的軟件包,使用逗號分割
請注意,有些軟件包很難編譯,在使用此選項時可能無法安裝。
-
--only-binary <format_control>
:不要使用源程序包
Conda(Anaconda)
參考:Anaconda介紹、安裝及使用教程
介紹
-
Conda 是一個開源的包管理系統(tǒng)和環(huán)境管理系統(tǒng),可在 Windows、macOS 和 Linux 上運行。
Conda 可快速安裝、運行和更新包及其依賴項,因此可以輕松地在計算機上創(chuàng)建、保存、加載和切換環(huán)境。
它本是為 Python 程序而創(chuàng)造的,因為 Python 的版本比較多,并且它的庫也非常廣泛,同時庫和庫之間存在很多依賴關系,所以在庫的安裝和版本的管理上很麻煩,因此設計 Conda 作為一個管理版本和 Python 環(huán)境的工具,但它也可以打包和管理任何語言的軟件。
conda 是包含在 Anaconda 里的,因此安裝了 Anaconda 就可以直接使用 Conda,點擊鏈接下載 download,選擇對應的系統(tǒng)和版本類型。
-
Anaconda 是一個免費開源的 Python 和 R 語言的發(fā)行版本,用于計算科學(數(shù)據科學、機器學習、大數(shù)據處理和預測分析),
Anaconda 致力于簡化軟件包管理系統(tǒng)和部署,附帶了 Conda、python 和 150 多個科學軟件包及其相關的包。
Anaconda 的包使用軟件包管理系統(tǒng) Conda 進行管理。
在項目開發(fā)和部署過程中,由于項目需要的虛擬環(huán)境不同,如 python 版本、模塊版本等,即可通過 Conda 為每個項目創(chuàng)建環(huán)境,然后在對應環(huán)境進行管理和使用。
-
多種編程語言的包 package 和虛擬環(huán)境 environment 的管理
-
非常簡單的完成 package 的安裝、運行、更新、刪除、依賴問題
-
可操作 repo.anaconda.com 上 7,500+ packages
-
非常簡單的完成不同環(huán)境的構建、保存、加載及切換
-
支持語言:Python、R、Ruby、Lua、Scala、Java、JavaScript、C / C ++、FORTRAN
但一般主要用于管理 python 包
-
支持操作系統(tǒng):Windows,macOS 和 Linux
Conda 常用指令
-
虛擬環(huán)境管理
# 查看所有環(huán)境。注:1.*號所在的行表示當前所在環(huán)境。2.系統(tǒng)默認虛擬環(huán)境為base conda env list conda info -e# 創(chuàng)建新的虛擬環(huán)境。注:1.遇到y(tǒng)es/no輸入yes,即可完成創(chuàng)建。 conda create -n envs_name python=python_version # envs_name :指定環(huán)境名稱 # python_version :指定Python版本# 進入虛擬環(huán)境 conda activate envs_name # 退出當前環(huán)境 conda deactivate# 刪除虛擬環(huán)境 conda env remove -n envs_name# 復制虛擬環(huán)境 conda create -n new_envs_name --clone old_envs_name# 更新python conda update python# 更新conda版本。注:必須在base環(huán)境更新 conda update conda
-
模塊/包管理
# 查看當前環(huán)境的包列表 conda list # 查看指定環(huán)境的包列表 conda list -n envs_name# 在當前環(huán)境安裝包。注:1.默認安裝最新版本,2.同時安裝多個包用空格分隔。 conda install package_name # 在指定環(huán)境安裝包 conda install --name env_name package_name # 安裝指定版本的包。注:使用conda安裝指定包時,conda可以自動處理相關的依賴包 conda install numpy=1.19 # 指定范圍內中版本包安裝(安裝版本處于1.0.4到1.1.1之間的pandas) conda install "pandas>1.0.4,<1.1.1" # 指定list中版本包安裝(安裝pandas 1.0.4版或者1.1.1版) conda install "pandas[version='1.0.4 |1.1.1']"# 包安裝跳過【y/n】。默認情況下為 false,即安裝過程中會請求是否繼續(xù)安裝,設置為yes則不再彈出請求。 conda config --set always_yes yes# 卸載當前環(huán)境的包 conda remove package_name # 卸載指定環(huán)境的包 conda remove --name env_name package_name# 升級當前環(huán)境的包 conda update/upgrade package_name # 升級指定環(huán)境的包 conda update/upgrade -n env_name package_name # 升級全部包 conda upgrade --all# 精確查找包 conda search package_name # 模糊查找包,模糊符號為 * conda search *<模糊詞>* # 查看某個范圍內版本包 conda search "PKGNAME [version='>=1.0.0,<1.1']"
-
conda 下載源管理
# 查看已配置下載源 conda config --show channels# 查看已配置下載源優(yōu)先級 conda config --get channels# 新增下載源(清華大學源) conda config --add channels channels_Name conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/# 刪除下載源 conda config --remove channels channels_Name# 顯示包的安裝來源 conda config --set show_channel_urls yes
注:Conda 下載源實際是寫入到了 .condarc 文件里:
-
linux 系統(tǒng)的路徑為
/home/xx/.condarc
-
windows 系統(tǒng)的路徑為
C:\Users\admin\.condarc
windows 默認無 .condarc 文件,需要 conda config --set show_channel_urls yes 先生成
-
-
其他命令
# 檢查conda版本 conda --version # 查看conda系統(tǒng)版本等信息 conda info # 查看conda所有配置信息 conda config --show
IDEA 配置 Conda 虛擬環(huán)境
IntelliJ IDEA 在安裝并啟用 Python 插件后支持使用 Conda 為 Python 創(chuàng)建虛擬環(huán)境。
創(chuàng)建 Conda 環(huán)境:
-
確保已將 Anaconda 或 Miniconda 下載并安裝在計算機上。
-
導航到文件|項目結構
- 方式1:左上角 File >>> Project Structure
- 方式2:快捷鍵:Ctrl+Shift+Alt+S
-
在 "項目結構(Project Structure)"對話框中,在 “平臺設置(Platform Setting)” 部分下選擇“ SDK ” ,然后添加一個新的 SDK ,然后從彈出菜單中選擇 “Python SDK”
-
在"添加 Python 解釋器(Add Python Interpreter)"對話框的左側窗格中,選擇 “Conda Environment” 。以下操作取決于以前是否存在 Conda 環(huán)境。
如果選擇“ 新環(huán)境(New environment)” :
- 在 Location 字段中指定新的 Conda 環(huán)境的位置。注意,新的 Conda 環(huán)境應位于的目錄必須為空!
- 從 Python version 列表中選擇 Python 版本
- 在 Conda executable 字段中指定 Conda 可執(zhí)行文件的位置
- 如果需要, 請選中“ 使所有項目都可用(Make available to all projects)”復選框。
如果選擇“ 現(xiàn)有環(huán)境(Existing environment)”(推薦使用):
-
展開“解釋器(Interpreter)”列表,然后選擇任何現(xiàn)有的解釋器?;蛘?#xff0c;單擊選擇 “…” 并在文件系統(tǒng)中指定 Conda 可執(zhí)行文件的路徑,例如
C:\Users\jetbrains\Anaconda3\python.exe
注:最好是 Conda 目錄下的 python.exe,否則可能會掃描不到安裝好的第三方庫
-
在 Conda executable 字段中指定 Conda 可執(zhí)行文件的位置
-
如果需要, 請選中“ 使所有項目都可用(Make available to all projects)”復選框。
-
單擊確定以完成任務。