71

我一直在寻找可以与 python 一起使用的包管理器。我想在文件中列出项目依赖项。例如,ruby 使用 Gemfile,您可以在其中使用 bundle install。我怎样才能在python中实现这一点?

4

6 回答 6

85

pip工具正在成为相当于 Ruby 的 gems 的标准。Like distributepip使用PyPI包存储库(默认情况下)来解析和下载依赖项。pip可以从列出项目依赖项的文件中安装依赖项(requirements.txt按约定调用):

pip install -r requirements.txt

您也可以使用 pip “冻结” Python 路径上的当前包:

pip freeze > requirements.txt

与包结合使用时virtualenv,您可以可靠地创建具有项目所需依赖项的项目 Python 环境。

于 2012-11-24T03:28:38.463 回答
48

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

你可以在这里找到它的文档。

于 2017-09-03T06:10:47.463 回答
10

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

于 2013-09-09T17:21:34.330 回答
7

这就是我将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

就这样。

于 2018-06-08T23:36:21.760 回答
2

这是pipenvvs poetryvs的比较pdmhttps ://dev.to/frostming/a-review-pipenv-vs-poetry-vs-pdm-39b4 结论是pdm胜利者。

但根据我的经验,poetry这比pdm与 IDE 集成要容易。

于 2021-11-20T15:45:24.010 回答
1

这是一个古老的问题,但事情在不断发展。

进一步关于其他答案pipenv。还有一个名为poetry.

pipenv和这里有一个详细的比较poertynpm、pip、pipenv 和诗歌包管理器之间的特性比较。它还将功能链接到常见npm功能。

于 2019-10-04T21:42:00.610 回答