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 的自动 --save-dev
选项,但 Kenneth Reitz(requests
等许多软件的作者)发布了一些关于更好地处理 pip
更新的更好的 pip 工作流程的信息。
编辑 2
从上面的“更好的 pip 工作流程”文章链接中,现在建议使用 pipenv
来管理要求和虚拟环境。最近我经常使用它,我想总结一下转换的简单性:
安装 pipenv
(在 Mac 上)
brew install pipenv
pipenv
创建并管理其自己的虚拟环境。在具有现有 requirements.txt
的项目中,安装所有要求(我使用 Python3.7,但如果您不需要,可以删除 --three
)非常简单:
pipenv --three install
激活虚拟环境以运行命令也很容易
pipenv shell
安装依赖将自动更新 Pipfile
和 Pipfile.lock
pipenv install <package>
也可以更新过时的软件包
pipenv update
我强烈推荐查看此网站,特别是对于那些有 npm
背景的人来说,因为它与 package.json
和 package-lock.json
有相似的感觉。
pipenv
允许你在 Pipfile
中指定 dev-packages
,并且可以从命令行使用 --dev
(或 -d
)。例如:pipenv install --dev nose2
。 - Ewan这条简单的命令是一个起点。你可以轻松地构建一个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
P=Flask pip install $P && pip freeze | grep $P >> requirements.txt
- GBrianpip install $package; pip freeze | select-string $package -Raw >> $requirementsFile
。 - Rob Hpip
,名为pipm
。所有pip
命令都将像原样工作,并且会反映在要求文件中。与pip-save
(已停用一段时间)不同,这是我发现但无法使用的类似工具,它可以处理许多文件和环境(测试、开发、生产等)。它还有一个命令来升级所有/任何依赖项。
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是一个依赖管理工具,包装了pip
,并提供了您所要求的内容。
https://pipenv.kennethreitz.org/en/latest/#example-pipenv-workflow
$ pipenv install <package>
这将创建一个Pipfile文件,如果不存在的话。如果已存在,则会自动使用您提供的新软件包进行编辑。
Pipfile
是package.json
的直接等价物,而Pipfile.lock
对应于package-lock.json
。
我正在使用这个小命令行来安装一个软件包并将其版本保存在 requirements.txt
中:
pkg=package && pip install $pkg && echo $(pip freeze | grep -i $pkg) >> requirements.txt
注意,这个命令行会将软件包的版本信息添加到 requirements.txt
文件中。
~/.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
中。
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
命令即可。
pip
做了一次快速改动,添加了--save
选项以安装/卸载命令。
请访问我的博客了解更多关于这个hack的信息: 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
npm install package --save-dev
同时完成了安装和添加到 node_npm 要求文件的操作,更加方便。而使用pip freeze
需要两个命令来完成相同的操作:1)pip install package
2)pip freeze > requirements.pip
。 - hllau--save
选项存在问题。 - rutsky