[英]is there an uninstall equivalent to “pip install --user <package>”?
[英]What is pip's equivalent of `npm install package --save-dev`?
在nodejs中,我可以做npm install package --save-dev
将安装的包保存到包中。
如何在 Python 包管理器pip
实现相同的功能? 我想保存软件包的名称和它的版本到,比方说, requirements.pip
只是使用类似安装包后pip install package --save-dev requirements.pip
。
pip
没有等效项。
最好的方法是pip install package && pip freeze > requirements.txt
您可以在他们的文档页面上看到所有可用的选项。
如果它真的困扰您,编写一个自定义 bash 脚本 ( pips
) 并不会太困难,该脚本采用-s
参数并自动冻结到您的requirements.txt
文件。
编辑 1
自从写这篇文章以来,提供类似于 NPM 的 auto --save-dev
选项没有任何变化,但是 Kenneth Reitz( requests
等的作者)发布了更多关于更好的 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
有相似的感觉
这条简单的线是一个起点。 您可以轻松构建一个 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
我创建了 python 包,它环绕着名为pipm的实际pip
。 所有pip
命令都将按原样工作,而且它们将反映在需求文件中。 与pip-save
( https://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
更新:显然, pipenv 没有得到 Python 维护者的正式认可, 之前链接的页面归另一个组织所有。 该工具有利有弊,但以下解决方案仍然达到了 OP 所寻求的结果。
pipenv是一个依赖管理工具,它包装了pip
,除其他外,它提供了你所要求的:
https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
$ pipenv install <package>
如果不存在,这将创建一个 Pipfile。 如果确实存在,它将自动使用您提供的新包进行编辑。
Pipfile
是package.json
的直接等价物,而Pipfile.lock
对应于package-lock.json
。
您可以手动将其保存在 Makefile(或文本文件,然后导入您的 Makefile)中:
PYTHON=.venv/bin/python # path to pyphon
PIP=.venv/bin/pip # path to pip
SOURCE_VENV=. .venv/bin/activate
install:
virtualenv .venv
$(SOURCE_VENV) && $(PIP) install -e PACKAGE
$(SOURCE_VENV) && $(PIP) install -r requirements.txt # other required packages
然后运行make install
我正在使用这个小命令行来安装一个包并将其版本保存在requirements.txt
: pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt
我对pip
进行了快速破解,以添加--save
选项来安装/卸载命令。
请查看我的博客以获取有关此 hack 的更多信息: http : //blog.abhiomkar.in/2015/11/12/pip-save-npm-like-behaviour-to-pip/
安装(GitHub): https : //github.com/abhiomkar/pip-save
希望这会有所帮助。
如何制作一个shell函数来做到这一点? 将以下代码添加到您的~/.profile
或~/.bashrc
pips() {
local pkg=$1
if [ -z "$1" ]; then
echo "usage: pips <pkg name>"
return 1
fi
local _ins="pip install $pkg"
eval $_ins
pip freeze | grep $pkg -i >> requirements.txt
}
然后运行source ~/.profile
或source ~/.bashrc
将其导入当前终端
当你想安装 && 保存一个包时,只需运行,例如pips requests
。 安装包后,它的版本将保存到当前目录下的requirements.txt
中。
这个如何:
pip freeze >> requirements.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.