我一直在寻找一个可以和python一起使用的包管理器。我想在一个文件中列出项目依赖项。例如,ruby使用Gemfile,你可以使用bundle install。如何在Python中实现这一点?
l7mqbcuq1#
pip工具正在成为Ruby gems的标准工具。与distribute一样,pip使用PyPI包存储库(默认情况下)来解析和下载依赖项。pip可以从列出项目依赖关系的文件(按照惯例称为requirements.txt)安装依赖关系:
pip
distribute
requirements.txt
pip install -r requirements.txt
你也可以使用pip“冻结”Python路径上的当前包:
pip freeze > requirements.txt
当与virtualenv包结合使用时,您可以可靠地创建具有项目所需依赖项的项目Python环境。
virtualenv
xuo3flqw2#
(我知道这是一个老问题,它已经有了答案,但对于像我一样来这里寻找不同答案的人来说。我发现了一个非常好的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。
xfb7svmp3#
Python使用pip作为包管理器。pip install命令有一个-r <file>选项,用于从指定的需求文件安装软件包。安装命令:
pip install
-r <file>
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
368yc8dk4#
这就是我如何将pip的作用域限制到当前项目的方法。如果您来自NodeJS的npm或PHP的composer,则感觉相反,您显式指定全局安装为-g或--global。如果你还没有安装virtualenv,那么用以下命令全局安装它:
npm
composer
-g
--global
pip install virtualenv
每个Python项目都应该有自己的virtualenv安装。很容易设置一个,只需将cd添加到项目的根目录,然后:
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 install package_name==version
./env/lib/python3.x/site-packages/
如果你在一个激活的项目专用虚拟环境中(你应该这样做),你实际上不需要-l或--local。现在,当你想从requirements.txt安装依赖项时,设置你的virtualenv,然后运行:
-l
--local
仅此而已
mm9b1k5b5#
这是一个老问题,但事情在不断发展。关于pipenv的另一个答案。还有一个Python包管理器,叫做poetry。下面是pipenv和poerty的详细比较:Feature comparison between npm, pip, pipenv and poetry package managers。它还将这些功能链接到常见的npm功能。
pipenv
poetry
poerty
igsr9ssn6#
以下是pipenv与poetry与pdm的比较:https://dev.to/frostming/a-review-pipenv-vs-poetry-vs-pdm-39b4的结论是pdm是赢家。但根据我的经验,poetry比pdm更容易与IDE集成。
pdm
nukf8bse7#
我在2021年写了一个答案,它进入了所有相关的细节。全面的TLDR指南。值得在这里分享。
7条答案
按热度按时间l7mqbcuq1#
pip
工具正在成为Ruby gems的标准工具。与
distribute
一样,pip
使用PyPI包存储库(默认情况下)来解析和下载依赖项。pip
可以从列出项目依赖关系的文件(按照惯例称为requirements.txt
)安装依赖关系:你也可以使用pip“冻结”Python路径上的当前包:
当与
virtualenv
包结合使用时,您可以可靠地创建具有项目所需依赖项的项目Python环境。xuo3flqw2#
Pipenv
(我知道这是一个老问题,它已经有了答案,但对于像我一样来这里寻找不同答案的人来说。
我发现了一个非常好的npm等价物,它叫做pipenv。它同时处理virtualenv和pip需求**,所以它更像npm。
简单用例
然后你可以用python的第三个版本制作一个新的virtualenv,以及制作一个pipfile,它将填充你的项目需求和其他东西:
使用创建的virtualenv:
安装一个新的Python包:
运行你的.py文件就像:
你可以找到它的文档here。
xfb7svmp3#
Python使用
pip
作为包管理器。pip install
命令有一个-r <file>
选项,用于从指定的需求文件安装软件包。安装命令:
requirements.txt
内容示例:有关格式的完整描述,请参见文档的需求解析部分:https://pip.pypa.io/en/stable/user_guide/#requirements-files
368yc8dk4#
这就是我如何将
pip
的作用域限制到当前项目的方法。如果您来自NodeJS的npm
或PHP的composer
,则感觉相反,您显式指定全局安装为-g
或--global
。如果你还没有安装
virtualenv
,那么用以下命令全局安装它:每个Python项目都应该有自己的
virtualenv
安装。很容易设置一个,只需将cd
添加到项目的根目录,然后:激活virtualenv:
现在,与
pip
的任何交互都包含在项目中。对每个依赖项运行
pip install package_name==version
。安装在./env/lib/python3.x/site-packages/
中如果要将项目的依赖项保存到文件中,请运行:
如果你在一个激活的项目专用虚拟环境中(你应该这样做),你实际上不需要
-l
或--local
。现在,当你想从
requirements.txt
安装依赖项时,设置你的virtualenv,然后运行:仅此而已
mm9b1k5b5#
这是一个老问题,但事情在不断发展。
关于
pipenv
的另一个答案。还有一个Python包管理器,叫做poetry
。下面是
pipenv
和poerty
的详细比较:Feature comparison between npm, pip, pipenv and poetry package managers。它还将这些功能链接到常见的npm
功能。igsr9ssn6#
以下是
pipenv
与poetry
与pdm
的比较:https://dev.to/frostming/a-review-pipenv-vs-poetry-vs-pdm-39b4的结论是pdm
是赢家。但根据我的经验,
poetry
比pdm
更容易与IDE集成。nukf8bse7#
pip,虚拟环境,requirement_list,Pipenv
我在2021年写了一个答案,它进入了所有相关的细节。全面的TLDR指南。值得在这里分享。
简历(查看上面的答案)
Python和pip
虚拟环境及其原因
pipenv(越接近npm)