Development #88335
erreur setuptools lors d’une tentative de `pip install -e` dans un environnement virtuel (?)
0%
Description
Ce qui casse mon devinst en local.
setuptools fait appel, pour l’exécution des commandes du setup.py de publik-base-theme, au multiprocessing python qui à son tour tente de faire un dump pickle de certaines des fonctions déclarées dans le setup.py (tentative de dump pour une raison qui m’échappe), et sans surprise ça se passe mal :
Building wheels for collected packages: publik_base_theme Building editable for publik_base_theme (pyproject.toml) ... error error: subprocess-exited-with-error × Building editable for publik_base_theme (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [132 lines of output] running editable_wheel creating /tmp/pip-wheel-uhnic3iy/.tmp-52lodenw/publik_base_theme.egg-info writing /tmp/pip-wheel-uhnic3iy/.tmp-52lodenw/publik_base_theme.egg-info/PKG-INFO # […] running build_themes_json running build_icons Traceback (most recent call last): File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/command/editable_wheel.py", line 155, in run self._create_wheel_file(bdist_wheel) File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/command/editable_wheel.py", line 357, in _create_wheel_file files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/command/editable_wheel.py", line 280, in _run_build_commands self._run_build_subcommands() File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/command/editable_wheel.py", line 307, in _run_build_subcommands self.run_command(name) File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/_distutils/cmd.py", line 318, in run_command self.distribution.run_command(command) File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/dist.py", line 967, in run_command super().run_command(command) File "/tmp/pip-build-env-9dv4izo7/overlay/lib/python3.11/site-packages/setuptools/_distutils/dist.py", line 988, in run_command cmd_obj.run() File "<string>", line 193, in run File "/usr/lib/python3.11/multiprocessing/pool.py", line 873, in next raise value File "/usr/lib/python3.11/multiprocessing/pool.py", line 540, in _handle_tasks put(task) File "/usr/lib/python3.11/multiprocessing/connection.py", line 206, in send self._send_bytes(_ForkingPickler.dumps(obj)) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/multiprocessing/reduction.py", line 51, in dumps cls(buf, protocol).dump(obj) _pickle.PicklingError: Can't pickle <function subprocess_run at 0x7f1901be3ba0>: attribute lookup subprocess_run on __main__ failed
Historique
Mis à jour par Thomas Noël il y a environ un mois
Même pépin chez moi (Debian testing, trixie). Ca crash sur le "make install" de devinst, et plus spécifiquement lors de l'exécution de :
$ /home/thomas/envs/publik-env-py3/bin/pip3 install -e /home/thomas/src/publik-base-theme django==3.2.18
qui n'arrive pas à lancer l'étape "build_icons" du setup.py, crash au moment de :
with Pool() as pool: for result in pool.imap_unordered(subprocess_run, cmds): if not result: raise CompileError('error building icons')
avec l'erreur vue par Paul « Can't pickle <function subprocess_run at 0x7fc4e1176660>: attribute lookup subprocess_run on main failed »
Mis à jour par Thomas Noël il y a environ un mois
Vu avec Manu qui était en pip 23.0.1, c'était sans problème : ça crashe depuis qu'il est passé à pip 24 comme Paul et moi.
Mis à jour par Emmanuel Cazenave il y a environ un mois
Un contournement, dans le venv : pip install -U "pip < 23.2"
Mis à jour par Emmanuel Cazenave il y a environ un mois
Emmanuel Cazenave a écrit :
Un contournement, dans le venv :
pip install -U "pip < 23.2"
pip install "pip < 23.1"
Mis à jour par Benjamin Dauvergne il y a environ un mois
Avec ce patch ça se passe mieux :
diff --git a/setup.py b/setup.py index e99b6b54..107f9fee 100644 --- a/setup.py +++ b/setup.py @@ -9,7 +9,7 @@ from distutils.command.build import build as _build from distutils.command.sdist import sdist from distutils.errors import CompileError from distutils.spawn import find_executable -from multiprocessing import Pool +from multiprocessing.pool import ThreadPool as Pool from setuptools import find_packages, setup from setuptools.command.install_lib import install_lib as _install_lib
Mis à jour par Thomas Noël il y a environ un mois
- Statut changé de Nouveau à En cours
- Assigné à mis à Thomas Noël
Mis à jour par Robot Gitea il y a environ un mois
- Tracker changé de Support à Development
- Statut changé de En cours à Solution proposée
Thomas NOËL (tnoel) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/publik-base-theme/pulls/549
- Titre : build: replace Pool with ThreadPool to avoid pickle issues (#88335)
- Modifications : https://git.entrouvert.org/entrouvert/publik-base-theme/pulls/549/files
Mis à jour par Robot Gitea il y a environ un mois
- Statut changé de Solution proposée à Solution validée
Paul Marillonnet (pmarillonnet) a approuvé une pull request sur Gitea concernant cette demande :
Mis à jour par Robot Gitea il y a environ un mois
- Statut changé de Solution validée à Résolu (à déployer)
Thomas NOËL (tnoel) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/publik-base-theme/pulls/549
- Titre : build: replace Pool with ThreadPool to avoid pickle issues (#88335)
- Modifications : https://git.entrouvert.org/entrouvert/publik-base-theme/pulls/549/files
Mis à jour par Transition automatique il y a environ un mois
- Statut changé de Résolu (à déployer) à Solution déployée