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