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

62lalag4  于 2023-08-02  发布在  Python
关注(0)|答案(2)|浏览(122)

我想为我的项目提供我的python包以避免sys. path。我的toml文件和lib-folder文件夹在同一个层次结构中。我想提供“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文件,并创建了一个新的。

3yhwsihp

3yhwsihp1#

您可以尝试以下步骤
要使你的Python包在Poetry环境中可用,你需要遵循以下步骤:
初始化诗歌:如果您还没有初始化Poetry,请从初始化Poetry开始。在项目的根目录中打开终端或命令提示符,然后运行以下命令:

poetry init

字符串
这将指导您创建一个保存项目配置的pyproject.toml文件。
组织您的包裹:确保Python包遵循标准目录结构。至少,它应该包含一个有效的Python包和一个init.py文件。举例来说:

my_package/
    __init__.py
    module1.py
    module2.py


定义相关性:在Poetry生成的pyproject.toml文件中,需要指定包的依赖项。使用[tool.poetry.dependencies]部分列出所需的软件包沿着版本。举例来说:

[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环境中可用。请记住,无论何时对包或其依赖项进行更改,都应该再次运行poetry install来更新环境。

gcuhipw9

gcuhipw92#

删除以下行:

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

字符串
您的软件包不是其自身的依赖项。它是 * 由pyproject.toml* 定义的程序包。

相关问题