我一直在寻找可以与 python 一起使用的包管理器。我想在文件中列出项目依赖项。例如,ruby 使用 Gemfile,您可以在其中使用 bundle install。我怎样才能在python中实现这一点?
6 回答
该pip
工具正在成为相当于 Ruby 的 gems 的标准。Like distribute
,pip
使用PyPI包存储库(默认情况下)来解析和下载依赖项。pip
可以从列出项目依赖项的文件中安装依赖项(requirements.txt
按约定调用):
pip install -r requirements.txt
您也可以使用 pip “冻结” Python 路径上的当前包:
pip freeze > requirements.txt
与包结合使用时virtualenv
,您可以可靠地创建具有项目所需依赖项的项目 Python 环境。
Pipenv
(我知道这是一个老问题,它已经有了答案,但对于像我这样来这里寻找不同答案的人来说。)
我找到了一个非常好的 npm 等价物,它叫做pipenv。它同时处理virtualenv 和 pip 要求,因此它更像 npm。
简单用例
pip install pipenv
然后你可以用第三版python制作一个新的virtualenv,以及制作一个pipfile来填充你的项目需求和其他东西:
pipenv install --three
使用您创建的 virtualenv:
pipenv shell
安装一个新的 python 包:
pipenv install requests
运行你的 .py 文件就像:
pipenv run python somefile.py
你可以在这里找到它的文档。
Pythonpip
用于包管理器。该pip install
命令具有-r <file>
从指定的需求文件安装软件包的选项。
安装命令:
pip install -r requirements.txt
示例requirements.txt
内容:
Foo >= 1.2
PickyThing <1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
SomethingWhoseVersionIDontCareAbout
有关格式的完整描述,请参阅文档的需求解析部分:https ://pip.pypa.io/en/stable/user_guide/#requirements-files
这就是我将pip
' 的范围限制在当前项目中的方式。如果您来自 NodeJSnpm
或 PHP ,您使用orcomposer
明确指定全局安装,则感觉正好相反。-g
--global
如果您尚未virtualenv
安装,请使用以下命令全局安装:
pip install virtualenv
每个 Python 项目都应该有自己的virtualenv
安装。设置一个很容易,只需cd
到您项目的根目录,并且:
python3 -m virtualenv env # creates env folder with everything you need
激活虚拟环境:
source env/bin/activate
现在,任何交互pip
都包含在您的项目中。
pip install package_name==version
为每个依赖项运行。它们安装在./env/lib/python3.x/site-packages/
如果要将项目的依赖项保存到文件中,请运行:
pip freeze > requirements.txt
你实际上不需要-l
或者--local
如果你在一个激活的项目特定的 virtualenv 中(你应该是)。
现在,当您想从 安装依赖项时requirements.txt
,设置您的 virtualenv,然后运行:
pip install -r requirements.txt
就这样。
这是pipenv
vs poetry
vs的比较pdm
:https ://dev.to/frostming/a-review-pipenv-vs-poetry-vs-pdm-39b4
结论是pdm
胜利者。
但根据我的经验,poetry
这比pdm
与 IDE 集成要容易。
这是一个古老的问题,但事情在不断发展。
进一步关于其他答案pipenv
。还有一个名为poetry
.
pipenv
和这里有一个详细的比较poerty
:npm、pip、pipenv 和诗歌包管理器之间的特性比较。它还将功能链接到常见npm
功能。