繁体   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