首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在pyproject.toml中正确包含路径依赖项?

pyproject.toml 文件中包含路径依赖项,通常是为了引用本地项目或库作为依赖项。这可以通过 path 关键字来实现。以下是如何在 pyproject.toml 中正确包含路径依赖项的步骤:

基础概念

pyproject.toml 是 Python 项目的配置文件,用于定义项目的构建系统、依赖项和其他元数据。它通常与 setup.py 文件一起使用,但 pyproject.toml 提供了更现代和灵活的方式来管理项目配置。

相关优势

  1. 灵活性:可以轻松地引用本地项目或库作为依赖项。
  2. 版本控制:可以指定特定版本的本地依赖项。
  3. 简化配置:避免了复杂的 setup.py 文件,使项目配置更加简洁。

类型

路径依赖项可以是相对路径或绝对路径。相对路径是相对于 pyproject.toml 文件的位置,而绝对路径则是从文件系统的根目录开始的完整路径。

应用场景

当你有一个本地项目或库,并且希望在另一个项目中使用它时,可以使用路径依赖项。这在开发过程中非常有用,因为它允许你在不发布到 PyPI 的情况下测试和调试代码。

示例

假设你有一个本地项目 my_library,并且希望在另一个项目 my_project 中使用它。你可以在 my_projectpyproject.toml 文件中添加以下内容:

代码语言:txt
复制
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[tool.poetry.dependencies]
python = "^3.8"
my_library = { path = "../my_library" }

在这个示例中:

  • build-system 部分定义了构建系统所需的工具。
  • tool.poetry.dependencies 部分定义了项目的依赖项。
  • my_library 是本地库的名称,path 指定了本地库的路径。

可能遇到的问题及解决方法

问题:路径错误

原因:指定的路径不正确,导致无法找到本地库。

解决方法:确保路径是正确的,并且相对于 pyproject.toml 文件的位置。

问题:版本冲突

原因:本地库和项目中的其他依赖项之间存在版本冲突。

解决方法:在 pyproject.toml 文件中明确指定本地库的版本,或者调整其他依赖项的版本以解决冲突。

问题:循环依赖

原因:两个或多个项目相互依赖,导致循环依赖问题。

解决方法:重构代码,将公共部分提取到一个独立的库中,或者使用延迟导入等技术来避免循环依赖。

参考链接

  • [Python Packaging User Guide: pyproject.toml](https://packaging.python.org/en/latest/tutorials/packaging-projects/#creating-a pyproject.toml)

通过以上步骤和示例,你应该能够在 pyproject.toml 文件中正确包含路径依赖项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在 WPF 获取所有已经显式赋过值的依赖属性

获取 WPF 的依赖属性的值时,会依照优先级去各个级别获取。这样,无论你什么时候去获取依赖属性,都至少是有一个有效值的。有什么方法可以获取哪些属性被显式赋值过呢?...如果是 CLR 属性,我们可以自己写判断条件,然而依赖属性没有自己写判断条件的地方。 本文介绍如何获取以及显式赋值过的依赖属性。...---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖属性本地值。...因此,你不能在这里获取到常规方法获取到的依赖属性的真实类型的值。 但是,此枚举拿到的所有依赖属性的值都是此依赖对象已经赋值过的依赖属性的本地值。如果没有赋值过,将不会在这里的遍历中出现。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

18240

#抬抬小手学Python# Python Poetry 进行依赖管理【图文】

摘要:在本教程,您探索了如何创建新的 Python Poetry 项目以及如何将 Poetry 添加到现有项目中。 当您的 Python 项目依赖于外部包时,您需要确保使用每个包的正确版本。...Python Poetry 之类的依赖管理器可帮助您指定、安装和解析项目中的外部包。通过这种方式,您可以确保始终在每台机器上使用正确依赖版本。...如果没有找到,Poetry 将解析pyproject.toml文件列出的依赖。 一旦poetry.lock文件存在,Poetry 将依赖该文件来安装依赖。...包含latest标签或版本约束对于使用该add命令至关重要。如果没有它,您会收到一条消息,表明该包已存在于您的项目中。另外,不要忘记--dev为开发依赖添加标志。否则,您会将包添加到常规依赖。...如果您还想包含您的开发依赖,您可以添加--dev到命令。要查看所有可用选项,您可以选中poetry export --help。 命令参考 ---- 本教程向您介绍了 Poetry 的依赖管理。

1.6K40
  • 何在 MSBuild 中正确使用 % 来引用每一个(Item)的元数据

    MSBuild 写在 的每一是一个 Item,Item 除了可以使用 Include/Update/Remove 来增删之外,还可以定义其他的元数据(Metadata)...使用 % 可以引用 Item 的元数据,本文将介绍如何正确使用 % 来引用每一个的元数据。...为了简单说明 % 的用法,我将已收集到的所有的元数据和它的本体一起输出到一个文件。这样,后续的编译过程可以直接使用这个文件来获得所有的和你希望关心它的所有元数据。...,这个路径即将用来存放所有 Content 和它的元数据; 定义一个工具路径,我们即将运行这个路径下的命令行程序来执行自定义的编译; 收集所有的 Content ,然后把所有的 PublishState...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

    27110

    poetry:简化Python依赖管理和打包

    另外stackoverflow上有一个讨论:能否将conda和poetry结合起来,conda负责创建不同版本的python(及其它依赖cuda),poetry只负责管理python包。...重点:pyproject.toml定义了项目及其依赖。...cd pre-existing-project poetry init ... 2 使用虚拟环境 如果你使用其他工具(conda)管理虚拟环境,则不需要使用 poetry shell ,因为您可能已经激活了该虚拟环境并提供了正确的...• 退出虚拟环境且不离开shell,输入deactivate 3.指定依赖 3.a 在pyproject.toml可以手动设置依赖 [tool.poetry.dependencies] pendulum...4 安装依赖 (当别人拿到你的项目后,就可以轻松安装依赖了) 在pyproject.toml所在目录下,执行poetry install会安装pyproject.homl依赖

    70210

    pyproject.toml文件的含义

    以下是 pyproject.toml 文件的一些常见用途: 依赖管理:指定项目所需的依赖及其版本。这可以包括运行项目所需的库和框架。...插件和扩展:为包管理器(PDM、Poetry、Flit等)提供配置,允许用户定义自定义命令、脚本、环境变量等。 动态依赖解析:支持动态解析依赖,这意味着某些依赖可以根据条件或环境变量动态确定。...PEP兼容:pyproject.toml 支持多个PEP标准, PEP 517(构建系统的接口)和 PEP 518(构建系统要求)。...多环境管理:允许为不同的环境(开发、测试、生产)定义不同的依赖。 包发布信息:如果项目打算发布到Python包索引(PyPI),pyproject.toml 还可以包含发布相关的信息。...随着Python社区对这一文件格式的广泛采用,它已成为Python项目结构不可或缺的一部分。 pyproject.toml文件怎么自动生成?

    1.4K21

    Python - poetry(2)命令介绍

    ] poetry install --no-dev --remove-untracked 移除 poetry.lock 文件不再存在的旧依赖 poetry install --remove-untracked.../my-package/dist/my_package-0.1.0.whl 以可编辑模式安装依赖pyproject.toml 文件指定,意味着本地目录的更改会直接反映在环境 [tool.poetry.dependencies.../my/path", develop = true} options --dev (-D):将包添加为开发依赖 --path:指定依赖路径 --optional:作为可选依赖添加 --dry-run...要导出的格式(默认值:requirements.txt)目前,仅支持requirements.txt --output (-o):输出文件的名称,如果省略,则打印到标准输出 --dev(-D):从开发依赖删除包...--extras (-E):要包含的额外依赖集 --without-hashes:从导出的文件中排除散列 --with-credentials:包括用于额外索引的凭据 env 管理虚拟环境,具体教程看

    1.2K20

    保姆教程:构建与发布Python包

    创建新项目后,使用 Poetry在虚拟环境安装所有依赖: poetry install 这将在您的根目录创建一个poetry.lock文件,其中包含有关所有已安装依赖的特定版本的信息。...然后,我们提交更新的依赖: git add poetry.lock pyproject.toml git commit -m "Add pre-commit devt dependency."...现在是时候将更改提交到仓库了,这些更改来自添加新依赖,然后是运行预提交挂钩的更改: git add pyproject.toml poetry.lock .pre-commit-config.yaml...此步骤完全是可选的 再一次,使用 Poetry 添加开发依赖: poetry add -D scriv[toml] 接下来,我在我的文件pyproject.toml配置 scriv 以将 markdown...只需转到存储库的/tags页面,然后单击标签旁边的三个点:它将有一个选项来创建该标签的发布。 总结 本文带您走过了一遍构建Python包的全部过程,:创建项目,依赖管理,Git管理,打包,发布等。

    1.3K30

    【翻译】客观评价与对比Python所有的依赖环境管理工具

    pyproject.toml 包含抽象依赖关系,锁定文件包含具体依赖关系。它记录了为项目安装的所有依赖的确切版本(例如 pandas==2.0.3)。...由于每个包都包含一个 pyproject.toml 定义其依赖的文件,因此其他开发人员不必单独安装所需的包,而只需从其 pyproject.toml 文件安装该包即可。...PEP 621 指定如何在 pyproject.toml 文件写入项目的核心元数据。我添加这个评判维度是因为一个包(剧透:它是 poetry)当前不支持此 PEP,但使用自己的方式来声明元数据。...文件列出的所有依赖并下载最新版本的软件包。...首次安装软件包时,pdm 会解析 pyproject.toml 文件列出的所有依赖并下载最新版本的软件包。

    10000

    客观对比 Python 所有的依赖环境管理工具

    pyproject.toml 包含抽象依赖关系,锁定文件包含具体依赖关系。它记录了为项目安装的所有依赖的确切版本(例如 pandas==2.0.3)。...由于每个包都包含一个 pyproject.toml 定义其依赖的文件,因此其他开发人员不必单独安装所需的包,而只需从其 pyproject.toml 文件安装该包即可。...PEP 621 指定如何在 pyproject.toml 文件写入项目的核心元数据。我添加这个评判维度是因为一个包(剧透:它是 poetry)当前不支持此 PEP,但使用自己的方式来声明元数据。...文件列出的所有依赖并下载最新版本的软件包。...首次安装软件包时,pdm 会解析 pyproject.toml 文件列出的所有依赖并下载最新版本的软件包。

    45010

    Python的众多包管理器

    正确的做法 在一个理性的世界里,包管理应该像 Cargo——rust 包管理器那样工作。你有一个单一的 TOML 主配置文件,你只需在其中列出你的依赖和配置设置。...和 PEP-621 合并 Python 配置 在 PEP-621 之前,给定 Python 项目中可能存在大量配置文件: requirements.txt:项目的依赖,可能包含也可能不包含包哈希值...MANIFEST.in: 告诉打包软件( setuptools)在包包含哪些非代码文件。 tox.ini:Tox 工具使用此文件配置环境设置、依赖和测试命令(你现在看到冗余了吗?)...在这些情况下,为 DAG 的每个可能的包浏览每个依赖可能涉及大量的操作,以通过下载和解析 Python 轮子直接找出软件包依赖。...conda 的核心权衡是它试图通过强制存在一个单独的 environment.yml 来以“正确”的方式进行包元数据,该文件正确声明了依赖和其他元数据。

    15510

    Python 新规范 pyproject.toml 完全解析

    少写几百行,介绍了如何在类这个层面让代码更加简洁,今天我想讲一下 pyproject.toml ;是怎么把这种简洁推向更高的层次,做到工程级别的简洁。...要讲清楚这个我们要追溯到 pyproject.toml 没有出现之前;为了提起大家的兴趣,还是先来看一下 pyproject.toml 目前有多流行。...包的作者无私的上传软件包到 PyPI twine upload dist/dbm-agent-8.31.1.tar.gz 2: 包的使用者下载安装包并安装 pip install dbm-agent 3: 在业务代码引入第三方软件包...安装 build 依赖并用 build 来打包 # 安装依赖 python3 -m pip install --upgrade build # 打包 python3 -m build ... ......---- pyproject.toml 高级 其实 pyproject.toml 还有一些其它的配置,不过数量上也不多;文章里面为了简单只列举了最少要声明的

    10.9K50

    Python项目管理: Poetry

    导读 本文将介绍一个目前十分流行,且用于众多Python项目中依赖管理和打包的工具,包含基本的安装与使用。 2. Poetry Poetry[1] 是Python 中用于依赖管理和打包的工具。...*toml文件 pyproject.toml可以算是Poetry的核心配置文件了,里面包含了项目的相关信息,使用的环境信息,安装的依赖信息,主要有以下配置: # 项目包的名字 name = "my-package...依赖管理 使用Poetry进行添加依赖,有两种方式。一种是在命令行,直接使用相关命令来添加依赖,或者删除依赖。另外一种是,通过修改项目中的pyproject.toml文件,来管理依赖。...poetry remove # 更新依赖 poetry update # 锁定依赖版本 poetry lock # 列出全部依赖 poetry show # 列出陈旧的依赖 poetry...README.md" packages = [{include = "project_name"}] [tool.poetry.dependencies] python = "^3.8" # 在此直接添加,

    85220

    Python项目管理: Poetry

    导读 本文将介绍一个目前十分流行,且用于众多Python项目中依赖管理和打包的工具,包含基本的安装与使用。 2. Poetry Poetry 是Python 中用于依赖管理和打包的工具。...*toml文件 pyproject.toml可以算是Poetry的核心配置文件了,里面包含了项目的相关信息,使用的环境信息,安装的依赖信息,主要有一下配置: # 项目包的名字 name = "my-package...依赖管理 使用Poetry进行添加依赖,有两种方式。一种是在命令行,直接使用相关命令来添加依赖,或者删除依赖。另外一种是,通过修改项目中的pyproject.toml文件,来管理依赖。...poetry remove # 更新依赖 poetry update # 锁定依赖版本 poetry lock # 列出全部依赖 poetry show # 列出陈旧的依赖 poetry...README.md" packages = [{include = "project_name"}] [tool.poetry.dependencies] python = "^3.8" # 在此直接添加,

    1K20

    Python程序打包指南:手把手教你一步步完成

    pyproject.toml告诉构建前端工具,pip和build,为项目使用哪个后端。以下是一些常见构建后端的示例,但请查看后端自己的留档以获取更多详细信息。...前端通常在隔离的环境运行构建,因此在这里省略依赖可能会导致构建时错误。这应该始终包括后端的包,并且可能有其他构建时依赖。...readme是包含包的详细描述的文件的路径。这显示在PyPI上的包详细信息页面上。在这种情况下,描述是从README.md加载的(这是一种常见的模式)。项目元数据规范还有一种更高级的表格形式。...有关可以在[project]表定义的这些和其他字段的详细信息,请参阅项目元数据规范。其他常见字段是提高可发现性的关键字和安装包所需的依赖。...由于TestPyPI没有与live PyPI相同的软件包,因此尝试安装依赖可能会失败或安装意外的东西。虽然我们的示例包没有任何依赖,但在使用TestPyPI时避免安装依赖是一个很好的做法。

    1.7K20

    你用Python 3了吗?这个飞向火星的语言已经30岁了!

    例如,以PEP 635的一个例子为例。假设你需要检查一个对象x是否是一个包含套接字连接的主机和端口信息的元组,以及可选的模式,HTTP或HTTPS。...对PostgreSQL覆盖索引的支持是Django 3.2另一个与索引相关的变化。一个覆盖索引可以让你在一个索引存储多个列。这使得只包含索引字段的查询可以得到满足,而无需额外的查表。...这引起了一些问题,因为执行setup.py和读取构建依赖需要安装一些构建依赖pyproject.toml在过去几年中得到了普及,现在被用于存储构建需求之外的东西。...PEP 621在2020年11月被暂时接受,并在2021年3月1日被标记为最终版本,它规定了如何在pyproject.toml文件写入项目的核心元数据。...有这么多的人和组织依赖PyPI,保证索引的安全是最重要的。这个月,PyPI成为GitHub的官方秘密扫描集成商。

    30030

    管理Python依赖关系的更好的选择:Poetry

    Conda 有些软件包, "snscrape",不能通过conda安装。此外,某些版本,Pandas 2.0,可能无法通过Conda安装。...通过分离依赖关系,可以明确区分开发目的所需的包,测试框架和代码质量工具,和生产环境所需的包,通常包括核心依赖关系。...这确保生产环境只包含运行应用程序所需的软件包,减少冲突或兼容性问题的风险。...Conda Conda本质上并不支持不同环境下的独立依赖,但一个变通方法是创建两个环境文件:一个用于开发环境,一个用于生产环境。开发文件包含了生产和开发的依赖关系。...高效的依赖性管理:Poetry只为指定的软件包安装必要的依赖性,减少你环境不相干的软件包的数量。

    2.2K20

    Python新一代包管理工具-PDM

    简单且相对快速的依赖解析程序,主要用于大型二进制发行版。 后端构建。 项目元数据。 灵活而强大的插件系统。 选择集中安装缓存, npm。...初始化完成后项目中会生成.pdm.toml、pyproject.toml 两个模板文件,而我们主要关注pyproject.toml。...给项目添加依赖包 和大多数的包管理工具一样,PDM 也是用 add 指令。 添加 requests 的过程: 添加完成后,和 npm 一样 PDM 也会在配置文件写入安装的依赖包信息。...为了模拟这种场景,我们手动向配置文件增加一个 flask 的包依赖。 然后执行 pdm install 即可 不得不说,PDM 体验是真的不错。...假设我们想要启动 flask 开发服务器,我们将 flask 应用移动到项目根路径,然后使用 pdm run flask run -p 5321 即可。

    2.1K30
    领券