我一直在寻找可以与python一起使用的包管理器。我想在文件中列出项目依赖项。例如,ruby使用Gemfile,您可以使用bundle install。 我怎样才能在python中实现这个目标?
答案 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)
(我知道这是一个古老的问题,它已经有了答案,但对于那些来这里寻找与我不同的答案的人来说。)
我发现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软件包管理器。
pipenv
和poerty
之间的详细比较如下:Feature comparison between npm, pip, pipenv and poetry package managers。它还将功能链接到常见的npm
功能。