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

如何在Python包管理器pip中实现同样的事情?我希望将包名称及其版本保存到(比如说)需求中。在安装包后使用类似PIP install package——save-dev requirements.pip的东西。


当前回答

我已经创建了一个python包,它包装了实际的pip,称为pipm。所有pip命令都将按原样工作,而且它们将反映在需求文件中。与pip-save(一段时间不活跃)不同,它可以处理许多文件和环境(测试、开发、生产等),这是我发现的一个类似的工具,但无法使用。它还有一个命令来升级所有/任何依赖项。

安装

Pipm安装pkg-name

安装作为开发依赖项

Pipm安装pkg-name——dev

安装作为测试依赖项

Pipm安装pkg-name——test

删除

Pipm卸载pkg-name

更新所有依赖项

pipm更新

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

pipm安装

包括开发依赖项

Pipm安装——dev

其他回答

这条简单的线是一个起点。您可以很容易地构建一个bash命令来重用该行中的PACKAGE。

pip install PACKAGE && pip freeze | grep PACKAGE >> requirements.txt

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

function pip-install-save { 
    pip install $1 && pip freeze | grep $1 >> requirements.txt
}

要使用它,只需运行:

pip-install-save some-package

pip是不一样的。

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

您可以在他们的文档页面上看到所有可用的选项。

如果这真的让您感到困扰,那么编写一个自定义bash脚本(pips)并接受一个-s参数并自动冻结到您的requirements.txt文件并不太难。

编辑1

自从写了这篇文章以来,在提供一个类似于NPM的自动保存-开发选项方面没有任何变化,但是Kenneth Reitz(请求的作者)发布了一些关于更好的pip工作流的信息,以更好地处理pip更新。

编辑2

从上面的“更好的pip工作流”文章链接,现在建议使用pipenv来管理需求和虚拟环境。最近我经常用这个词,我想总结一下这个转变是多么简单:

安装pipenv (Mac)

brew install pipenv

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

pipenv --three install

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

pipenv shell

安装需求将自动更新Pipfile和Pipfile.lock

pipenv install <package>

也可以更新过期的包

pipenv update

我强烈建议你看看它,特别是如果你有npm的背景,因为它和package有相似的感觉。Json和package-lock.json

我正在使用这个小命令行安装一个包,并将其版本保存在requirements.txt中: Pkg =package && PIP install $ Pkg && echo $(PIP freeze | grep -i $ Pkg) >> require .txt

我在pip上做了一个快速的hack,添加了—save选项来安装/卸载命令。

请看看我的博客,了解更多关于这次黑客攻击的信息: http://blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/

安装(GitHub): https://github.com/abhiomkar/pip-save

希望这能有所帮助。

这个呢:

pip freeze >> requirements.txt