如何使我的Python包在poetry环境中可用?

问题描述 投票:0回答:2

我想向我的项目提供 python 包以避免 sys.path。我的 toml 文件与 lib 文件夹位于同一层次结构中。我想提供“my_package”作为包。我一直使用 pyenv 作为虚拟环境。它与诗歌结合起来没有任何问题。但是,当我运行

poetry install
命令时,出现错误:
Directory /Users/<user>/<repo_name>/lib/my_package for my-package does not seem to be a Python package
.

这是我的pyproject.toml的内容:

[tool.poetry]
...
packages = [{ include = "my_package", from = "lib" },]

[tool.poetry.dev-dependencies]
...
my-package = { path = "./lib/my_package/", develop = true }

这是文件夹结构:

./lib
└── my_package
    ├── __init__.py
    ├── file1.py
    └── file2.py
pyproject.toml

我已经尝试了所有变体,重命名我的包,避免使用连字符和下划线。我也从“lib”中取出过一次包,所以默认情况下诗歌应该可以直接识别它。一切都没有成功。我也关注了this thread,不幸的是我没有得到相同的积极结果。我的虚拟环境已激活。我还完全删除了我的 toml 文件并创建了一个新文件。

python dependency-management python-poetry
2个回答
0
投票

删除这些行:

[tool.poetry.dev-dependencies]
...
my-package = { path = "./lib/my_package/", develop = true }

你的包本身不是依赖项。它是

pyproject.toml
定义的包。


-1
投票

您可以尝试以下步骤

要使您的 Python 包在 Poetry 环境中可用,您需要执行以下步骤:

初始化 Poetry:如果您还没有初始化 Poetry,请先为您的项目初始化 Poetry。在项目根目录中打开终端或命令提示符并运行以下命令:

poetry init

这将指导您创建一个 pyproject.toml 文件来保存项目的配置。

组织您的包:确保您的 Python 包遵循标准目录结构。它至少应该包含一个有效的 Python 包和一个 init.py 文件。例如:

my_package/
    __init__.py
    module1.py
    module2.py

定义依赖项:在 Poetry 生成的 pyproject.toml 文件中,您需要指定包的依赖项。使用 [tool.poetry.dependency] 部分列出所需的包及其版本。 例如:

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.26.0"

添加您的包:由于您想包含自己的包,因此您需要在 Poetry 中将其引用为本地包。在 pyproject.toml 中,使用 [tool.poetry.dependencies] 部分指定包目录的路径。 例如:

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.26.0"
my_package = { path = "./path/to/your/package" }

将 ./path/to/your/package 替换为相对于 pyproject.toml 文件的包目录的实际路径。

安装依赖项:运行以下命令在 Poetry 环境中安装包及其依赖项:

poetry install

激活虚拟环境(可选,但推荐):建议激活 Poetry 虚拟环境,以便在隔离环境中使用已安装的包及其依赖项。

poetry shell

使用您的包:既然您的包在 Poetry 环境中可用,您可以像使用任何其他包一样在 Python 代码中导入和使用它。 通过执行这些步骤,您应该已成功使 Python 包在 Poetry 环境中可用。请记住,每当您对包或其依赖项进行更改时,您都应该再次运行诗歌安装来更新环境。

© www.soinside.com 2019 - 2024. All rights reserved.