Python相当于npm或rubygems

Dil*_*son 59 python rubygems npm

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

Bar*_*ark 72

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

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

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

  • `pip freeze` 创建了安装在我的虚拟环境中的所有库的列表。有什么办法可以自动排除当前项目工作不需要的那些吗? (2认同)
  • @Piotrek有一个-l(或--local)选项可以满足您的要求。https://pip.pypa.io/zh_CN/stable/reference/pip_freeze/ (2认同)

Soo*_*ena 38

Pipenv

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

我找到了一个非常好的npm,它叫做pipenv.它同时处理virtualenv和pip要求,所以它更像是npm.


简单的用例

pip install pipenv
Run Code Online (Sandbox Code Playgroud)

那么你可以使用python的第三个版本创建一个新的virtualenv,以及制作一个将填充你的项目要求和其他东西的pip文件:

pipenv install --three
Run Code Online (Sandbox Code Playgroud)

使用您创建的virtualenv:

pipenv shell
Run Code Online (Sandbox Code Playgroud)

安装一个新的python包:

pipenv install requests
Run Code Online (Sandbox Code Playgroud)

运行.py文件就像:

pipenv run python somefile.py
Run Code Online (Sandbox Code Playgroud)

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


小智 8

Python pip用于包管理器.该pip install命令可以-r <file>选择从指定的需求文件安装包.

安装命令:

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

示例requirements.txt内容:

Foo >= 1.2
PickyThing <1.6,>1.9,!=1.9.6,<2.0a0,==2.4c1
SomethingWhoseVersionIDontCareAbout
Run Code Online (Sandbox Code Playgroud)

有关格式的完整说明,请参阅文档的"要求解析"部分:https://pip.pypa.io/en/stable/user_guide/#requirements-files


Sam*_*yek 7

这就是我将pip的范围限制到当前项目的方式。如果您来自 NodeJSnpm或 PHP composer,您使用-g或明确指定全局安装,则感觉正好相反--global

如果您还没有virtualenv安装,请使用以下命令全局安装:

 pip install virtualenv
Run Code Online (Sandbox Code Playgroud)

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

 python3 -m virtualenv env  # creates env folder with everything you need
Run Code Online (Sandbox Code Playgroud)

激活虚拟环境:

 source env/bin/activate
Run Code Online (Sandbox Code Playgroud)

现在,任何与 的交互pip都包含在您的项目中。

pip install package_name==version为每个依赖项运行。它们安装在./env/lib/python3.x/site-packages/

如果要将项目的依赖项保存到文件,请运行:

 pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

您实际上不需要-l或者--local如果您处于激活的特定于项目的 virtualenv(您应该是)中。

现在,当您想从 安装依赖项时requirements.txt,请设置您的 virtualenv,然后运行:

 pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

就这样。