Python相当于npm或rubygems

时间:2012-11-24 03:10:42

标签: python rubygems npm

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

5 个答案:

答案 0 :(得分:62)

pip工具正在成为相当于Ruby宝石的标准。与distribute类似,pip使用PyPI软件包存储库(默认情况下)来解析和下载依赖项。 pip可以从列出项目依赖项的文件中安装依赖项(按惯例称为requirements.txt):

pip install -r requirements.txt

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

pip freeze > requirements.txt

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

答案 1 :(得分:35)

Pipenv

(我知道这是一个古老的问题,它已经有了答案,但对于那些来这里寻找与我不同的答案的人来说。)

我发现npm 的非常好的等价物,它被称为RFC 1937。它同时处理 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

你可以找到它的文档pipenv

答案 2 :(得分:7)

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

答案 3 :(得分:2)

这就是我将pip的范围限制在当前项目中的方式。如果您来自NodeJS的npm或PHP composer,您明确指定-g或{{1}的全局安装,则感觉恰恰相反}}

如果您尚未安装--global,请使用以下方式全局安装:

virtualenv

每个Python项目都应该有自己的 pip install virtualenv 安装。只需将virtualenv设置为项目的根目录即可轻松设置一个,并且:

cd

激活virtualenv:

 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

这就是全部。

答案 4 :(得分:0)

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

关于pipenv的其他答案。还有一个名为poetry的python软件包管理器。

pipenvpoerty之间的详细比较如下:Feature comparison between npm, pip, pipenv and poetry package managers。它还将功能链接到常见的npm功能。