Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to install pydriller from sources #293

Open
n-bes opened this issue Jun 27, 2024 · 4 comments
Open

Failed to install pydriller from sources #293

n-bes opened this issue Jun 27, 2024 · 4 comments

Comments

@n-bes
Copy link

n-bes commented Jun 27, 2024

Minimal reproducible example

Dockerfile:

FROM debian:12
ENV DEBIAN_FRONTEND="noninteractive" \
    POETRY_VERSION="1.8.3" \
    POETRY_HOME="/opt/poetry"
RUN apt-get update -y && \
    apt-get install -y \
        gcc \
        curl \
        python3-venv \
        python3-pip \
        python3-dev
ENV PATH=/root/.cargo/bin:/opt/poetry/bin:$PATH
RUN curl -sSL https://install.python-poetry.org | python3 - \
    && poetry config virtualenvs.create false
COPY pyproject.toml .
RUN python3 -m venv /venv && . /venv/bin/activate && \
    poetry lock
COPY poetry.toml .

Minimal reproducible example. PyDriller 1.5

poetry.toml:

[installer]
no-binary = [
    "gitdb",
    "gitpython",
    "lizard",
    "pydriller",
    "pytz",
    "smmap",
]

pyproject.toml:

[tool.poetry]
name = "hello-pydriller"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = ">=3.10,<3.13"
pydriller="1.15.5"

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

Minimal reproducible example. PyDriller 1.15.5. Poetry

$ docker build .
$ docker run --rm -it ...
$ source venv/bin/activate
$ poetry install --no-root
Installing dependencies from lock file

Package operations: 6 installs, 0 updates, 0 removals

  - Installing smmap (5.0.1)
  - Installing gitdb (4.0.11)
  - Installing gitpython (3.1.43)
  - Installing lizard (1.17.10)
  - Installing pytz (2024.1)
  - Installing pydriller (1.15.5): Failed

  RuntimeError

  Unable to find installation candidates for pydriller (1.15.5)

  at /opt/poetry/venv/lib/python3.11/site-packages/poetry/installation/chooser.py:74 in choose_for
       70│
       71│             links.append(link)
       72│
       73│         if not links:
    →  74│             raise RuntimeError(f"Unable to find installation candidates for {package}")
       75│
       76│         # Get the best link
       77│         chosen = max(links, key=lambda link: self._sort_key(package, link))
       78│

Cannot install pydriller.

Minimal reproducible example. PyDriller 1.15.2. Poetry

$ docker build .
$ docker run --rm -it ...
$ source venv/bin/activate
$ poetry install --no-root
Installing dependencies from lock file

Package operations: 6 installs, 0 updates, 0 removals

  - Installing smmap (5.0.1)
  - Installing gitdb (4.0.11)
  - Installing gitpython (3.1.43)
  - Installing lizard (1.17.10)
  - Installing pytz (2024.1)
  - Installing pydriller (1.15.2): Failed

  ChefBuildError

  Backend subprocess exited when trying to invoke get_requires_for_build_wheel

  Traceback (most recent call last):
    File "/opt/poetry/venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/_in_process.py", line 373, in <module>
      main()
    File "/opt/poetry/venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/_in_process.py", line 357, in main
      json_out["return_val"] = hook(**hook_input["kwargs"])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/poetry/venv/lib/python3.11/site-packages/pyproject_hooks/_in_process/_in_process.py", line 134, in get_requires_for_build_wheel
      return hook(config_settings)
             ^^^^^^^^^^^^^^^^^^^^^
    File "/tmp/tmpalc04bft/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 327, in get_requires_for_build_wheel
      return self._get_build_requires(config_settings, requirements=[])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/tmp/tmpalc04bft/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 297, in _get_build_requires
      self.run_setup()
    File "/tmp/tmpalc04bft/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 497, in run_setup
      super().run_setup(setup_script=setup_script)
    File "/tmp/tmpalc04bft/.venv/lib/python3.11/site-packages/setuptools/build_meta.py", line 313, in run_setup
      exec(code, locals())
    File "<string>", line 4, in <module>
  FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'


  at /opt/poetry/venv/lib/python3.11/site-packages/poetry/installation/chef.py:164 in _prepare
      160│
      161│                 error = ChefBuildError("\n\n".join(message_parts))
      162│
      163│             if error is not None:
    → 164│                 raise error from None
      165│
      166│             return path
      167│
      168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with pydriller (1.15.2) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "pydriller (==1.15.2)"'.

Minimal reproducible example. PyDriller 1.15. pip

$ docker build .
$ docker run --rm -it ...
$ source venv/bin/activate
$ pip3 install --no-binary ":all:" pydriller=="1.15.5"
DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453
ERROR: Could not find a version that satisfies the requirement pydriller==1.15.5 (from versions: 1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.3, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.5, 1.5.1, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.7, 1.8, 1.9, 1.9.1, 1.9.2, 1.10, 1.10.1, 1.11, 1.11.1, 1.11.2, 1.12, 1.13, 1.14, 1.15, 1.15.1, 1.15.2)
ERROR: No matching distribution found for pydriller==1.15.5

$ pip3 install --no-binary ":all:" pydriller=="1.15.2"
DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453
Collecting pydriller==1.15.2
  Downloading PyDriller-1.15.2.tar.gz (39 kB)
  Preparing metadata (setup.py) ... error
  error: subprocess-exited-with-error

  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [7 lines of output]
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/tmp/pip-install-_8lymkz3/pydriller_beb673ec222a49418a948c1ef98ee9fa/setup.py", line 4, in <module>
          with open('requirements.txt') as reqs_file:
               ^^^^^^^^^^^^^^^^^^^^^^^^
      FileNotFoundError: [Errno 2] No such file or directory: 'requirements.txt'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

Minimal reproducible example. PyDriller 2.6

pyproject.toml:

[tool.poetry]
name = "hello-pydriller"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]

[tool.poetry.dependencies]
python = ">=3.10,<3.13"
pydriller="2.6"

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

poetry.toml:

[installer]
no-binary = [
	"gitdb",
	"gitpython",
	"lizard",
	"pydriller",
	"pytz",
	"smmap",
	"types-pytz"
]

Minimal reproducible example. PyDriller 2.6. poetry

$ docker build .
$ docker run --rm -it ...
$ source venv/bin/activate
$ poetry install --no-root
Installing dependencies from lock file

Package operations: 7 installs, 0 updates, 0 removals

  - Installing smmap (5.0.1)
  - Installing gitdb (4.0.11)
  - Installing gitpython (3.1.43)
  - Installing lizard (1.17.10)
  - Installing pytz (2024.1)
  - Installing types-pytz (2024.1.0.20240417)
  - Installing pydriller (2.6): Failed

  RuntimeError

  Unable to find installation candidates for pydriller (2.6)

  at /opt/poetry/venv/lib/python3.11/site-packages/poetry/installation/chooser.py:74 in choose_for
       70│
       71│             links.append(link)
       72│
       73│         if not links:
    →  74│             raise RuntimeError(f"Unable to find installation candidates for {package}")
       75│
       76│         # Get the best link
       77│         chosen = max(links, key=lambda link: self._sort_key(package, link))
       78│

Cannot install pydriller.

Minimal reproducible example. PyDriller 2.6. pip

$ docker build .
$ docker run --rm -it ...
$ source venv/bin/activate
$ pip3 install --no-binary ":all:" pydriller=="2.6"
DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453
ERROR: Could not find a version that satisfies the requirement pydriller==2.6 (from versions: 1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.3, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.5, 1.5.1, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.7, 1.8, 1.9, 1.9.1, 1.9.2, 1.10, 1.10.1, 1.11, 1.11.1, 1.11.2, 1.12, 1.13, 1.14, 1.15, 1.15.1, 1.15.2)
ERROR: No matching distribution found for pydriller==2.6
@ishepard
Copy link
Owner

I'm not super familiar with Poetry, I always wanted to try it but never had the chance, maybe now it's a good time! 😄

If I look at pip, I can install it from source:

❯ pip install -e /Users/dspadini/Documents/pydriller
Obtaining file:///Users/dspadini/Documents/pydriller
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Collecting gitpython (from PyDriller==2.6)
  Using cached GitPython-3.1.43-py3-none-any.whl.metadata (13 kB)
Collecting pytz (from PyDriller==2.6)
  Using cached pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting types-pytz (from PyDriller==2.6)
  Using cached types_pytz-2024.1.0.20240417-py3-none-any.whl.metadata (1.5 kB)
Collecting lizard (from PyDriller==2.6)
  Using cached lizard-1.17.10-py2.py3-none-any.whl.metadata (15 kB)
Collecting gitdb<5,>=4.0.1 (from gitpython->PyDriller==2.6)
  Using cached gitdb-4.0.11-py3-none-any.whl.metadata (1.2 kB)
Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython->PyDriller==2.6)
  Using cached smmap-5.0.1-py3-none-any.whl.metadata (4.3 kB)
Using cached GitPython-3.1.43-py3-none-any.whl (207 kB)
Using cached lizard-1.17.10-py2.py3-none-any.whl (66 kB)
Using cached pytz-2024.1-py2.py3-none-any.whl (505 kB)
Using cached types_pytz-2024.1.0.20240417-py3-none-any.whl (5.2 kB)
Using cached gitdb-4.0.11-py3-none-any.whl (62 kB)
Using cached smmap-5.0.1-py3-none-any.whl (24 kB)
Building wheels for collected packages: PyDriller
  Building editable for PyDriller (pyproject.toml) ... done
  Created wheel for PyDriller: filename=PyDriller-2.6-0.editable-py3-none-any.whl size=6884 sha256=ede912dd26eb3b2831acd929fff4e900b0f586ac970f36c5b83cb85ebaaa394d
  Stored in directory: /private/var/folders/39/qht51vsx1z12ydvwdp47m50m0000gn/T/pip-ephem-wheel-cache-7dk2zx8h/wheels/3d/70/5d/99d4abf3b226f4e173d29a76d219bc05e95c264811abcadd82
Successfully built PyDriller
Installing collected packages: pytz, lizard, types-pytz, smmap, gitdb, gitpython, PyDriller
Successfully installed PyDriller-2.6 gitdb-4.0.11 gitpython-3.1.43 lizard-1.17.10 pytz-2024.1 smmap-5.0.1 types-pytz-2024.1.0.20240417

[notice] A new release of pip is available: 24.0 -> 24.1.1
[notice] To update, run: pip install --upgrade pip

@n-bes
Copy link
Author

n-bes commented Jun 27, 2024

I'm not super familiar with Poetry

It also failed with pip

I can install it from source:

pip install -e /Users/dspadini/Documents/pydriller - May be publish to PyPi process is broken

@ishepard
Copy link
Owner

Can you try locally (not in Docker) to install it? What errors do you get?

@n-bes
Copy link
Author

n-bes commented Jun 27, 2024

Can you try locally (not in Docker) to install it? What errors do you get?

Same errors on MacOS (arm-based)

Снимок экрана 2024-06-27 в 19 03 07

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants