简体   繁体   中英

Install a python repo from setup.py in poetry

I'm trying to install pl_cross repository using poetry. In the README it's indicated that it must be installed running python setup.py install . When I try to install the repo adding it to my pyproject.toml file:

[tool.poetry]
name = "iq_segmentator"
version = "0.1.0"
description = "Speed up Deep Learning semantic segmentation projects."
authors = ["Jeremiah Poveda Martínez <jere@qubiotech.com>"]

[tool.poetry.dependencies]
python = "3.9"
wandb = "0.12.18"
nibabel = "4.0.1"
torch = "1.11.0"
pytorch-lightning = "1.6.4"
torchmetrics = "0.9.1"
monai = "0.9.0"
hydra-core = "1.2.0"
black = "22.3.0"
pytest = "7.1.2"
numpy = "1.22.4"
matplotlib = "3.5.2"
pl_cross = {git = "https://github.com/SkafteNicki/pl_cross.git", branch="master"}
sphinx = {version = "5.0.2", optional = true}
sphinxcontrib-napoleon = {version = "0.7", optional = true}
sphinx-rtd-theme = {version = "1.0.0", optional = true}

[tool.poetry.scripts]
pl_cross = "pl_closs:setup"

[tool.poetry.extras]
docs = ["sphinx", "sphinx-rtd-theme", "sphinxcontrib-napoleon"]

[tool.poetry.dev-dependencies]
mlflow = "^1.26.1"
pydra = "^0.18"

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

I get the following error:

Updating dependencies
Resolving dependencies... (4.8s)

  PackageInfoError

  Unable to determine package info for path: /tmp/pypoetry-git-pl_crossah48_3rm
  
  Fallback egg_info generation failed.
  
  Command ['/tmp/tmpfc8t0g_3/.venv/bin/python', 'setup.py', 'egg_info'] errored with the following return code 1, and output: 
  Traceback (most recent call last):
    File "/tmp/pypoetry-git-pl_crossah48_3rm/setup.py", line 15, in <module>
      import pl_cross
    File "/tmp/pypoetry-git-pl_crossah48_3rm/pl_cross/__init__.py", line 40, in <module>
      from .datamodule import BaseKFoldDataModule, KFoldDataModule
    File "/tmp/pypoetry-git-pl_crossah48_3rm/pl_cross/datamodule.py", line 5, in <module>
      import torch
  ModuleNotFoundError: No module named 'torch'

  at ~/.poetry/lib/poetry/inspection/info.py:500 in _pep517_metadata
      496│                 try:
      497│                     venv.run_python("setup.py", "egg_info")
      498│                     return cls.from_metadata(path)
      499│                 except EnvCommandError as fbe:
    → 500│                     raise PackageInfoError(
      501│                         path, "Fallback egg_info generation failed.", fbe
      502│                     )
      503│                 finally:
      504│                     os.chdir(cwd.as_posix())

NOTE: I have torch installed. Could someone point out what is causing the error? Is is possible to isntall packages this way with poetry? Is this documented?

Poetry is not able to parse the needed metadata (package name, version and dependencies) from the setup.py . This is why a wheel package needs to be build where Poetry can obtain these information.

Building the wheel is done in a clean, temporary environment and all build-dependencies mentioned in the pyproject.toml according to PEP-518 are installed into this.

The problem with pl_cross is, that within the setup.py pl_cross is imported, which in return imports other modules and dependencies, which are not installed in the build environment.

Please contact the maintainer of this project and ask them to refactor it, so that the unnecessary imports doesn't happen.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM