”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Django 项目中使用 Poetry

如何在 Django 项目中使用 Poetry

发布于2024-11-01
浏览:644

首先您需要在计算机上安装诗歌。有很多方法可以做到这一点,我使用brew(brew install诗)下载它。您可以通过适当的方式从Poetry自己的网站下载。

但是让我们首先简要了解一下诗歌是什么以及它与 virtualenv 有何不同

Poetry是一个管理Python项目和依赖项的工具,可以更轻松地处理包管理和项目结构。它允许开发人员以简单的方式定义和管理依赖项、创建虚拟环境并处理项目版本控制。

与 venv 的区别:

  • VirtualEnv:venv 是一个标准的 Python 模块,用于创建隔离的虚拟环境,其中依赖项与全局环境分开安装。然而,venv 本身并不管理项目依赖关系;你通常需要使用 pip 之类的东西来安装依赖项并手动跟踪它们。

  • Poetry:另一方面,Poetry 不仅创建虚拟环境,还自动管理依赖关系。它使用 pyproject.toml 文件来跟踪依赖项、版本和项目配置。 Poetry 还通过处理版本控制和打包来简化 Python 包的发布。

综上所述,venv 创建隔离环境的同时,Poetry 提供了更全面的项目管理解决方案,包括依赖解析和打包工具。

安装Poetry后,我们来创建Django项目:

thehormat@Pawn Desktop % mdkir DjangoPoetry
thehormat@Pawn DjangoPoetry % cd DjangoPoetry 
thehormat@Pawn DjangoPoetry % poetry init

This command will guide you through creating your pyproject.toml config.

Package name [djangopoetry]:  DjangoPoetry 
Version [0.1.0]:  
Description []:  We learn Poetry
Author [HormatHamidov , n to skip]:  TheHormat
License []:  
Compatible Python versions [^3.12]:  

Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no 
Generated file

[tool.poetry]
name = "djangopoetry"
version = "0.1.0"
description = "We learn Poetry"
authors = ["TheHormat"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


Do you confirm generation? (yes/no) [yes]  

然后我们将有一个这样的文件:
How to use Poetry in Django project

太好了,现在让我们继续吧。我们需要将 Django 添加到我们的项目中。但在此之前我们需要先激活诗歌,就像virtualenv逻辑一样:

thehormat@Pawn DjangoPoetry % poetry shell
Creating virtualenv djangopoetry-5djS955q-py3.12 in /Users/thehormat/Library/Caches/pypoetry/virtualenvs
Spawning shell within /Users/thehormat/Library/Caches/pypoetry/virtualenvs/djangopoetry-5djS955q-py3.12
thehormat@Pawn DjangoPoetry % emulate bash -c '. /Users/thehormat/Library/Caches/pypoetry/virtualenvs/djangopoetry-5djS955q-py3.12/bin/activate'
(djangopoetry-py3.12) thehormat@Pawn DjangoPoetry % 

(djangopoetry-py3.12) thehormat@Pawn DjangoPoetry %

⬆️ 如果您在终端中看到此结果,则诗歌处于活动状态。

然后让我们将Django添加到项目中:

(djangopoetry-py3.12) hormathamidov@Pawn DjangoPoetry % poetry add django
Using version ^5.1.2 for django

Updating dependencies
Resolving dependencies... (0.3s)

Package operations: 3 installs, 0 updates, 0 removals

  - Installing asgiref (3.8.1)
  - Installing sqlparse (0.5.1)
  - Installing django (5.1.2)

Writing lock file

我们将在 toml 文件中看到这样的新奇之处。这意味着我们已经成功设置了 django:

[tool.poetry.dependencies]
python = "^3.12"
django = "^5.1.2"

现在,我们终于可以正常安装并运行 django 了:

(djangopoetry-py3.12) thehormat@Pawn DjangoPoetry % django-admin startproject core .
(djangopoetry-py3.12) thehormat@Pawn DjangoPoetry % python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 14, 2024 - 18:22:05
Django version 5.1.2, using settings 'core.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

这是令人惊奇的结果:
How to use Poetry in Django project

我想为 Poetry 提供一点帮助,您可以从 Poetry 自己的文档中了解更多信息。

结论

?您不必惊慌,经过详细搜索后,您可以轻松找到并修复它。

?️ 在您离开之前...如果您有任何问题/建议/想法,请在下面给我留言。

如果您喜欢这个,请告诉我们您对漂亮表情符号的感受(?❤️‍?),并且不要忘记关注未来的更新。

这就是我的。我们很快就会谈!

— TheHormat ♟️

版本声明 本文转载于:https://dev.to/thehormat/how-to-use-poetry-in-django-project-43n1?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何在鼠标单击时编程选择DIV中的所有文本?
    如何在鼠标单击时编程选择DIV中的所有文本?
    Programmatically Selecting DIV Text on Mouse ClickQuestionGiven a DIV element with text content, how can the user programmatically select the entire t...
    编程 发布于2025-04-18
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-04-18
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-18
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    python dictionary consection 在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in ...
    编程 发布于2025-04-18
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-04-18
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月份)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将...
    编程 发布于2025-04-18
  • 解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    编程 发布于2025-04-18
  • Android如何向PHP服务器发送POST数据?
    Android如何向PHP服务器发送POST数据?
    在android apache httpclient(已弃用) httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(“ http://www.yoursite.com/script.p...
    编程 发布于2025-04-18
  • Python不会对超范围子串切片报错的原因
    Python不会对超范围子串切片报错的原因
    在python中用索引切片范围:二重性和空序列索引单个元素不同,该元素会引起错误,切片在序列的边界之外没有。这种行为源于索引和切片之间的基本差异。索引一个序列,例如“示例” [3],返回一个项目。但是,切片序列(例如“示例” [3:4])返回项目的子序列。索引不存在的元素时,例如“示例” [9] ...
    编程 发布于2025-04-18
  • Node.js 20新特性一览
    Node.js 20新特性一览
    于2023年4月18日发布,Node.JS版本20拥有重大改进,以解决Deno和Bun等替代方案以前解决的开发人员问题。 本文使用此广泛采用的JavaScript运行时探讨了开发人员的关键增强功能。 使用新的许可模型增强了安全性: node.js 20使用 - 实验性许可模型 - 实验 - p...
    编程 发布于2025-04-18
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-18
  • 在C和C++中,为什么不能直接赋值数组,但在结构体中可以?
    在C和C++中,为什么不能直接赋值数组,但在结构体中可以?
    在C和C 最初,C中的数组被模型为记忆中的指针,被称为“煮熟的数组”。当引入结构时,对结构内的阵列进行了不同的处理,以确保记忆安全。这允许在结构内分配成员的数组,而不会损害与现有代码的兼容性。相比之下,C在C的原始设计中不支持结构以外的数组的分配。这是由于关注指针重新启动以及声称为函数参数的数组...
    编程 发布于2025-04-18
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-04-18
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-04-18
  • 左连接为何在右表WHERE子句过滤时像内连接?
    左连接为何在右表WHERE子句过滤时像内连接?
    左JOIN CONUNDRUM:WITCHING小时在数据库Wizard的领域中变成内在的加入很有趣,当将c.foobar条件放置在上面的Where子句中时,据说左联接似乎会转换为内部连接。仅当满足A.Foo和C.Foobar标准时,才会返回结果。为什么要变形?关键在于其中的子句。当左联接的右侧值...
    编程 发布于2025-04-18

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3