什么是pip相当于`npm install package --save-dev`?

hll*_*lau 174 python pip node.js

在nodejs中,我可以npm install package --save-dev将已安装的包保存到包中.

我如何在Python包管理器中实现相同的功能pip?我想将软件包名称及其版本保存到requirements.pip安装包之后,比如说pip install package --save-dev requirements.pip.

Ewa*_*wan 141

没有相应的pip.

最好的方法是 pip install package && pip freeze > requirements.txt

您可以在其文档页面上查看所有可用选项.

如果它真的困扰你,那么编写一个自定义bash脚本(pips)来获取-s参数并requirements.txt自动冻结到你的文件并不会太困难.

编辑1

自写这篇文章以来,提供--save-dev类似于NPM 的自动选项没有任何变化,但Kenneth Reitz(requests以及更多的作者)发布了更多关于更好的pip工作流程的信息,以更好地处理pip更新.

编辑2

从上面的"更好的点工作流程"文章链接,现在建议用它pipenv来管理需求和虚拟环境.最近我使用了很多这个,我想总结过渡是多么简单:

安装pipenv(在Mac上)

brew install pipenv
Run Code Online (Sandbox Code Playgroud)

pipenv创建和管理它自己的虚拟环境,所以在一个现有的项目中requirements.txt,安装所有需求(我使用Python3.7但你可以删除,--three如果你不这样做)就像这样简单:

pipenv --three install
Run Code Online (Sandbox Code Playgroud)

激活virtualenv以运行命令也很容易

pipenv shell
Run Code Online (Sandbox Code Playgroud)

安装要求将自动更新PipfilePipfile.lock

pipenv install <package>
Run Code Online (Sandbox Code Playgroud)

也可以更新过期的软件包

pipenv update
Run Code Online (Sandbox Code Playgroud)

我强烈建议检查它,特别是如果来自npm背景,因为它有类似的感觉package.jsonpackage-lock.json

  • 请注意,这也将保存随着时间的推移可能不再需要的依赖项的依赖性,因为依赖项放弃了它的使用. (19认同)
  • @jeznag `pipenv` 允许您在 `Pipfile` 中指定 `dev-packages` 和/或从命令行使用 `--dev` (或 `-d`)。例如 `pipenv install --dev nos2` (3认同)
  • 这似乎没有解决原始问题的 --save-dev 方面,它允许您对本地开发与生产具有不同的依赖关系。如何使用 Pipenv 实现这一目标? (2认同)

Kar*_*jux 27

这条简单的线是一个起点.您可以轻松地构建一个bash命令来重用该行中的PACKAGE.

pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt
Run Code Online (Sandbox Code Playgroud)

感谢@devsnd的简单bash函数示例:

function pip-install-save { 
    pip install $1 && pip freeze | grep $1 >> requirements.txt
}
Run Code Online (Sandbox Code Playgroud)

要使用它,只需运行:

pip-install-save some-package
Run Code Online (Sandbox Code Playgroud)


Noo*_*aja 6

我创建了围绕实际pip调用的python 包pipm。所有pip命令都将按原样工作,而且它们将反映在需求文件中。与pip-savehttps://github.com/kgritesh/pip-save 已停用 5 年)类似的工具不同,我发现但无法使用,它可以处理许多文件和环境(测试、开发、生产等)。它还具有升级所有/任何依赖项的命令。

安装

pipm install pkg-name

安装为开发依赖

pipm install pkg-name --dev

安装作为测试依赖

pipm install pkg-name --test

移动

pipm uninstall pkg-name

更新所有依赖项

pipm update

从需求文件安装所有依赖项

pipm install

包括开发依赖

pipm install --dev


dsk*_*rvk 6

更新:显然,pipenv 并未得到 Python 维护者的正式认可,并且之前链接的页面由不同的组织拥有。该工具有其优点和缺点,但下面的解决方案仍然达到了OP所寻求的结果。

\n

Pipenv是一个依赖管理工具,它包装pip并提供您所要求的内容:

\n

https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow

\n
\n

$ pipenv install <package>

\n

如果\xe2\x80\x99 不存在,这将创建一个 Pipfile。如果确实存在,它将自动使用您提供的新包进行编辑。

\n
\n

APipfile直接等价于package.json,而Pipfile.lock对应于package-lock.json

\n