
poetry的`new`命令自2025年4月起已变更其项目初始化行为。现在,执行`poetry new`不再自动创建`test_*.py`测试文件,并且`__init__.py`文件默认为空。这一变化旨在提供更灵活的初始化方式,开发者应参照最新官方文档,并根据项目需求手动配置测试结构,以确保项目遵循最新的最佳实践。
Poetry作为一款现代化的Python依赖管理和项目打包工具,以其简洁高效的特性受到了广大开发者的青睐。然而,随着其版本的迭代,某些默认行为也发生了变化。其中一个显著的改变是关于poetry new命令在项目初始化时对测试文件和__init__.py文件的处理。
在此前的版本中,当开发者使用poetry new
然而,自2025年4月起,Poetry的这一默认行为已被修改。此项变更(具体可追溯到此提交)旨在提供更灵活的项目初始化方式。现在,执行poetry new命令后:
这一变化意味着Poetry在项目初始化时更加“轻量化”和“不干预”,将测试结构的搭建和__init__.py文件的具体内容留给开发者根据实际需求自行决定。
鉴于上述行为变更,开发者在初始化Poetry项目时应注意以下几点:
首先,像往常一样使用poetry new命令创建新项目:
poetry new my-new-project
执行此命令后,my-new-project的目录结构将如下所示:
my-new-project/
├── pyproject.toml
├── README.md
├── my_new_project/
│ └── __init__.py # 此文件将为空
└── tests/
└── __init__.py # 此文件将为空可以看到,tests/目录下没有自动生成的测试文件。
美图云修
商业级AI影像处理工具
50
查看详情
如果项目需要测试,开发者需要手动创建测试文件并配置测试框架(如pytest)。
步骤示例:
安装测试框架: 通常,pytest是一个流行的选择。通过Poetry将其添加到开发依赖中:
cd my-new-project poetry add pytest --group dev
或者在pyproject.toml中手动添加:
[tool.poetry.group.dev.dependencies] pytest = "^7.0" # 根据需要选择版本
然后运行 poetry install。
创建测试文件: 在tests/目录下手动创建测试文件,例如tests/test_example.py:
# tests/test_example.py
from my_new_project import __version__
def test_version():
assert __version__ == "0.1.0" # 假设你在pyproject.toml中定义了版本运行测试: 使用Poetry运行测试:
poetry run pytest
对于__init__.py文件,如果需要定义包的版本或其他元数据,应手动添加。例如,在my_new_project/__init__.py中:
# my_new_project/__init__.py __version__ = "0.1.0"
这与Poetry早期版本自动填充版本号的行为不同,现在需要开发者自行管理。
再自动生成测试文件,但这为开发者提供了更大的灵活性,可以根据项目的具体需求和偏好(例如使用unittest而不是pytest,或采用不同的测试文件命名约定)来构建测试结构。Poetry new 命令的行为变更是一项旨在提升工具灵活性的设计决策。开发者现在需要更加主动地配置项目的测试环境和__init__.py文件内容。通过理解这些变化并遵循最新的官方文档和最佳实践,可以确保您的Poetry项目始终保持健康、高效且易于维护。
以上就是Poetry new 命令行为变更:项目初始化不再自动生成测试文件的详细内容,更多请关注其它相关文章!
相关文章:
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
Python中高效访问嵌套字典与列表中的键值对
PHP教程:将数据库查询结果动态展示到HTML Textarea的最佳实践
J*a递归快速排序中静态变量的状态管理与陷阱
excel怎么制作工资条 excel快速生成工资条的方法
c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学
凉拌黄瓜怎么拌更入味 凉拌黄瓜简单家常做法
win11跳过OOBE三种方法 Win11跳过OOBE设置步骤
12306几点到几点不能订票? | 官方最新系统维护时间全解析
怎样在Excel中做仪表盘_Excel仪表盘设计与关键指标展示方法
天猫2025双十一0点秒杀攻略 天猫爆款抢购时间
KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程
Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】
qq音乐在线播放入口_qq音乐电脑版登录链接
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
steam官方入口大全 steam账号注册及操作指南
C++如何操作注册表_Windows平台下C++读写注册表的API函数详解
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
网易大神账号申诉需要多久_网易大神账号申诉流程说明
极速漫画官方主页网址 极速漫画漫画在线浏览官网链接
在Runstone环境中高效处理TasteDive API的JSON数据
CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略
如何让 composer 信任自签名的 HTTPS 证书源?
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
mysql如何设置表访问权限_mysql表访问权限配置
提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战
韩剧圈正版入口页面_韩剧圈官网登录链接
将JSON对象数组转置为键值对列表的实用指南
Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧
解决Bootstrap卡片顶部边距导致背景图下移的问题
Fabric Mod开发:在1.19.3+版本中正确添加自定义物品并管理物品组
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程
Steam官网入口直达 Steam注册及登录步骤
解决Flask中Quill编辑器内容提交失败及TypeError的指南
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
谷歌google账号怎么注册账号 谷歌账号注册官方流程
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
Fabric模组开发:自定义物品与物品组的现代管理方法
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
Pandas DataFrame:高效添加条件计算列
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
响应式容器内容自动缩放与宽高比维持教程
AO3官网镜像链接 Archive of Our Own同人文在线浏览
word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法
Composer如何在生产环境安全地执行composer update