Python相当于npm还是rubygems?

aamkag61  于 2023-10-19  发布在  Python
关注(0)|答案(7)|浏览(183)

我一直在寻找一个可以和python一起使用的包管理器。我想在一个文件中列出项目依赖项。
例如,ruby使用Gemfile,你可以使用bundle install。
如何在Python中实现这一点?

l7mqbcuq

l7mqbcuq1#

pip工具正在成为Ruby gems的标准工具。
distribute一样,pip使用PyPI包存储库(默认情况下)来解析和下载依赖项。
pip可以从列出项目依赖关系的文件(按照惯例称为requirements.txt)安装依赖关系:

pip install -r requirements.txt

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

pip freeze > requirements.txt

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

xuo3flqw

xuo3flqw2#

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

你可以找到它的文档here

xfb7svmp

xfb7svmp3#

Python使用pip作为包管理器。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

368yc8dk

368yc8dk4#

这就是我如何将pip的作用域限制到当前项目的方法。如果您来自NodeJS的npm或PHP的composer,则感觉相反,您显式指定全局安装为-g--global
如果你还没有安装virtualenv,那么用以下命令全局安装它:

pip install virtualenv

每个Python项目都应该有自己的virtualenv安装。很容易设置一个,只需将cd添加到项目的根目录,然后:

python3 -m virtualenv env  # creates env folder with everything you need

激活virtualenv:

source env/bin/activate

现在,与pip的任何交互都包含在项目中。
对每个依赖项运行pip install package_name==version。安装在./env/lib/python3.x/site-packages/
如果要将项目的依赖项保存到文件中,请运行:

pip freeze > requirements.txt

如果你在一个激活的项目专用虚拟环境中(你应该这样做),你实际上不需要-l--local
现在,当你想从requirements.txt安装依赖项时,设置你的virtualenv,然后运行:

pip install -r requirements.txt

仅此而已

mm9b1k5b

mm9b1k5b5#

这是一个老问题,但事情在不断发展。
关于pipenv的另一个答案。还有一个Python包管理器,叫做poetry
下面是pipenvpoerty的详细比较:Feature comparison between npm, pip, pipenv and poetry package managers。它还将这些功能链接到常见的npm功能。

igsr9ssn

igsr9ssn6#

以下是pipenvpoetrypdm的比较:https://dev.to/frostming/a-review-pipenv-vs-poetry-vs-pdm-39b4的结论是pdm是赢家。
但根据我的经验,poetrypdm更容易与IDE集成。

nukf8bse

nukf8bse7#

pip,虚拟环境,requirement_list,Pipenv

我在2021年写了一个答案,它进入了所有相关的细节。全面的TLDR指南。值得在这里分享。

简历(查看上面的答案)

Python和pip

  • 虚拟环境
  • 需求文件(软件包列表)
  • pip freeze命令
  • 如何从需求文件安装软件包

虚拟环境及其原因

  • 为什么
  • 使用
  • 需求文件
  • 冻结指令
  • 安装软件包简历

pipenv(越接近npm)

  • 安装
  • virtualenv-mapping-caveat
  • 基本用法和与npm的比较
  • 使用pipenv进行环境管理
  • 皮涅夫运行
    • 答案包括全面的TLDR指南。我也觉得值得在这里分享一下**

相关问题