簡體   English   中英

python pip 是否相當於 node 的 package.json?

[英]Does python pip have the equivalent of node's package.json?

在 NodeJS 的 npm 中,您可以創建一個 package.json 文件來跟蹤您的項目依賴項。 當您想安裝它們時,您只需運行npm install ,它會查看您的包文件並使用該單個命令安裝它們。

在分發我的代碼時,python 是否具有等效的概念,或者我是否需要在我的 README 中告訴人們安裝每個依賴項,如下所示:

pip install package1
pip install package2

在他們可以使用我的代碼之前?

一旦添加了所有必要的包

pip freeze > requirements.txt

創建需求文件。

pip install -r requirements.txt

再次安裝這些軟件包,比如在生產期間。

是的,它稱為需求文件:

https://pip.readthedocs.io/en/1.1/requirements.html

您可以指定包名稱和版本號。

您還可以指定 git url 或本地路徑

通常情況下,您可以指定包后跟版本號,例如

sqlalchemy=1.0.1

您可以通過命令安裝requirements.txt文件中指定的所有包

pip install -r requirements.txt

安裝完所有軟件包后,請執行以下操作:

pip freeze > requirements.txt

這將在文件requirements.txt添加包詳細信息 現在,對於安裝:

pip install -r requirements.txt` 

它將完成安裝軟件包的工作

我想在這里提出pipenv 使用Pipenv管理包更容易,因為它為您管理包的列表和版本,因為我認為每次對包進行更改時都需要運行pip freeze命令。

它將需要一個Pipfile 這個文件將包含所有你需要的包和它們的版本,就像 package.json 一樣。

您可以使用pipenv install/uninstall/update <package>刪除/更新/添加項目

這也會為您的項目生成一個依賴樹。 就像package-lock.json

Pipfiles上查看這篇文章

了解有關Pipenv 的更多信息

最好的方法可能是pipenv 我個人在用!

但是在本指南中,我將解釋如何僅使用 python 和 pip 來完成! 而且沒有pipenv! 這是第一部分! 它將讓我們很好地了解 pipenv 的工作原理! 還有第二部分處理pipenv 檢查pipenv (The more close to npm) 部分

Python 和 pip

用python搞定一切! 這里的主要元素:

  • 虛擬環境
  • 需求文件(包列表)
  • pip 凍結命令
  • 如何從需求文件安裝包

虛擬環境及其原因

請注意,為此將使用包venv 這是官方的! 並附帶從 3.3+ 開始的 python 3 安裝!

要很好地了解它是什么以及為什么檢查這個https://docs.python.org/3/tutorial/venv.html

總之! 一個虛擬環境將幫助我們管理一個獨立版本的 python 解釋器! 安裝的軟件包也是如此! 這樣! 不同的項目不必依賴相同的包安裝而不得不沖突! 閱讀上面的鏈接解釋並展示它!

... 這意味着一個 Python 安裝可能無法滿足每個應用程序的要求。 如果應用程序 A 需要特定模塊的 1.0 版,而應用程序 B 需要 2.0 版,則需求存在沖突,安裝 1.0 或 2.0 版將導致一個應用程序無法運行。

你可能想查看flask框架文檔的解釋!

https://flask.palletsprojects.com/en/1.1.x/installation/#virtual-environments

為什么我們關心這個並且應該使用它 隔離項目! (每個都有它的環境)! 然后凍結命令將在每個項目基礎上工作! 檢查最后一節

用法

這里有一個關於如何設置和工作的很好的指南:

https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/

首先檢查安裝部分!

然后

創建虛擬環境,請轉到項目目錄並運行:

在 macOS 和 Linux 上:

> python3 -m venv env

在 Windows 上:

> py -m venv env

注意您應該使用 .gitignore 或類似文件從您的版本控制系統中排除您的虛擬環境目錄。

要開始在控制台中使用環境,您必須激活它

https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/#activation-a-virtual-environment

在 macOS 和 Linux 上:

> source env/bin/activate

在 Windows 上:

> .\env\Scripts\activate

請參閱有關如何檢查您是否在環境中的部分(使用 which (linux, unix) or where (windows))!

要停用您使用

> deactivate

需求文件

https://pip.pypa.io/en/latest/user_guide/#requirements-files

“需求文件”是包含要使用 pip install 安裝的依賴項列表的文件,如下所示

如何安裝需求文件

pip install -r requirements.txt

需求文件用於保存 pip freeze 的結果,以實現可重復安裝。 在這種情況下,您的需求文件包含運行pip freeze安裝的所有內容的固定版本

python -m pip freeze > requirements.txt
python -m pip install -r requirements.txt

一些語法:

pkg1
pkg2==2.1.0
pkg3>=1.0,<=2.0

== 准確!

requests==2.18.4
google-auth==1.1.0

強制 pip 接受早期版本

ProjectA
ProjectB<1.3

使用帶有標簽的 git(自己修復錯誤而不是等待)

git+https://myvcs.com/some_dependency@sometag#egg=SomeDependency

再次檢查鏈接https://pip.pypa.io/en/latest/user_guide/#requirements-files我從中挑選了所有示例! 你應該看看解釋! 還有細節!

有關格式詳細信息,請檢查: https : //pip.pypa.io/en/latest/cli/pip_install/#requirements-file-format

凍結命令

Pip 可以使用 freeze 命令導出所有已安裝軟件包及其版本的列表! 在運行命令時! 列出當前環境中所有已安裝軟件包的列表!

pip freeze

這將輸出如下內容:

cachetools==2.0.1
certifi==2017.7.27.1
chardet==3.0.4
google-auth==1.1.1
idna==2.6
pyasn1==0.3.6
pyasn1-modules==0.1.4
requests==2.18.4
rsa==3.4.2
six==1.11.0
urllib3==1.22

我們可以將其寫入需求文件

pip freeze > requirements.txt

https://pip.pypa.io/en/latest/cli/pip_freeze/#pip-freeze

安裝包恢復

通過為每個項目使用 venv(虛擬環境)! 這些項目是孤立的! 然后 freeze 命令將僅列出安裝在該特定環境中的軟件包! 這是由項目基地組成的! 凍結命令在運行時列出軟件包! 與確切版本匹配! 我們從中生成一個需求文件(requirements.txt)! 我們可以將其添加到項目倉庫中! 並安裝了依賴項!

整個可以在這個意義上完成:

linux/unix

python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt

窗戶

py -m venv env
.\env\Scripts\activate
pip3 install -r requirements.txt

克隆 repo 后的第一次設置!

創建新環境!

然后激活它!

然后安裝所需的包到它!

否則這里是關於使用官方文檔中的 requiremnets 文件和虛擬環境安裝軟件包的完整指南: https : //packaging.python.org/guides/installing-using-pip-and-virtual-environments/

第二個指南也顯示得很好: https : //docs.python.org/3/tutorial/venv.html

鏈接列表(已列出):

pipenv(更接近 npm)

https://pipenv.pypa.io/en/latest/

pipenv是一個嘗試像 Python 中的 npm 一樣的工具! 是一套超級pip!

pipenv 為我們創建虛擬環境! 並管理依賴項!

一個很好的功能是能夠像文件一樣寫入 packages.json ! 腳本部分也在其中!

執行 pipfile 腳本

在命令行中使用別名運行 python 命令,如 npm

安裝

https://pipenv.pypa.io/en/latest/install/

virtualenv-mapping-警告

https://pipenv.pypa.io/en/latest/install/#virtualenv-mapping-caveat

對我來說,在項目中創建 env(就像 node_modules 一樣)甚至應該是默認設置! 一定要激活! 通過設置環境變量!

pipenv 似乎更方便!

主要管理運行腳本太好了,不容錯過! 一個工具可以簡化這一切!

基本用法和與 npm 的比較

https://pipenv.pypa.io/en/latest/basics/

(請務必查看上面的指南以熟悉基礎知識)

注意 npm package.json 的等價物是PipFile文件!

一個例子:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
flask = "*"
simplejson = "*"
python-dotenv = "*"

[dev-packages]
watchdog = "*"

[scripts]
start = "python -m flask run"

[requires]
python_version = "3.9"

有像 package.lock 這樣的Pipfile.lock

運行npm install 等效 你運行pipenv install

安裝新包

pipenv install <package>

如果不存在,這將創建一個 Pipfile。 如果確實存在,它將自動使用您提供的新包進行編輯。

就像使用 npm 一樣!

$ pipenv install "requests>=1.4"   # will install a version equal or larger than 1.4.0
$ pipenv install "requests<=2.13"  # will install a version equal or lower than 2.13.0
$ pipenv install "requests>2.19"   # will install 2.19.1 but not 2.19.0

如果設置了PIPENV_VENV_IN_PROJECT=1變量! 使pipenv在項目中設置虛擬環境! 它是在名為.venv (相當於 node_modules)的目錄中創建的。

也在目錄中沒有PipFile 的情況下運行pipenv install 既不是虛擬環境! 將在.venv目錄(node_modules equiv)上創建虛擬環境! 並生成一個PipFilePipfile.lock

在此處輸入圖片說明

安裝燒瓶示例:

pipenv install flask

安裝為開發依賴項

pipenv install watchdog -d

pipenv install watchdog -dev

就像使用 npm 一樣!

pipenv 所有命令 (pipenv -h)

Commands:
  check      Checks for PyUp Safety security vulnerabilities and against PEP
             508 markers provided in Pipfile.

  clean      Uninstalls all packages not specified in Pipfile.lock.
  graph      Displays currently-installed dependency graph information.
  install    Installs provided packages and adds them to Pipfile, or (if no
             packages are given), installs all packages from Pipfile.

  lock       Generates Pipfile.lock.
  open       View a given module in your editor.
  run        Spawns a command installed into the virtualenv.
  scripts    Lists scripts in current environment config.
  shell      Spawns a shell within the virtualenv.
  sync       Installs all packages specified in Pipfile.lock.
  uninstall  Uninstalls a provided package and removes it from Pipfile.
  update     Runs lock, then sync.

命令幫助

pipenv install -h

requirements.txt導入

https://pipenv.pypa.io/en/latest/basics/#importing-from-requirements-txt

使用 pipenv 進行環境管理

https://pipenv.pypa.io/en/latest/basics/#environment-management-with-pipenv

管道運行

要在項目虛擬環境中運行任何東西,您需要使用pipenv run

就像pipenv run python server.py

自定義腳本快捷方式

npm 中的腳本!

https://pipenv.pypa.io/en/latest/advanced/#custom-script-shortcuts

[scripts]
start = "python -m flask run"

並運行

pipenv run start

就像使用 npm 一樣!

如果您想要鎖定文件的 requirements.txt 輸出,請運行 $ pipenv lock -r。 然而,這將包括所有散列(這很棒!)。 要獲得不帶哈希值的 requirements.txt,請使用 $ pipenv run pip freeze。

還要提一下 pipenv cli 渲染做得很好:

在此處輸入圖片說明

請務必閱讀基礎指南!

你可以看到pipenv有多豐富!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM