Django, python3, à l'installation, j'obtiens: «Le module parent 'setuptools' n'est pas chargé»

Aug 30 2020

Je vois beaucoup d'erreurs et de suggestions sur Parent module '' not loaded, ...

Je ne vois pas de django 3.5 spécifiquement «prêt à l'emploi».

$ mkvirtualenv foobar -p /usr/bin/python3 Already using interpreter /usr/bin/python3 Using base prefix '/usr' New python executable in /home/isaac/.virtualenvs/foobar/bin/python3 Also creating executable in /home/isaac/.virtualenvs/foobar/bin/python Installing setuptools, pkg_resources, pip, wheel...done. [foobar] $ pip install django
Collecting django
  Using cached Django-2.2.15-py3-none-any.whl (7.5 MB)
Collecting pytz
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)
Installing collected packages: pytz, sqlparse, django
Successfully installed django-2.2.15 pytz-2020.1 sqlparse-0.3.1

[foobar] $ python
Python 3.5.3 (default, Jul  9 2020, 13:00:10)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/isaac/.virtualenvs/foobar/lib/python3.5/site-packages/django/__init__.py", line 1, in <module>
    from django.utils.version import get_version
  File "/home/isaac/.virtualenvs/foobar/lib/python3.5/site-packages/django/utils/version.py", line 6, in <module>
    from distutils.version import LooseVersion
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 577, in module_from_spec
  File "/home/isaac/.virtualenvs/foobar/lib/python3.5/site-packages/_distutils_hack/__init__.py", line 82, in create_module
    return importlib.import_module('._distutils', 'setuptools')
  File "/home/isaac/.virtualenvs/foobar/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 981, in _gcd_import
  File "<frozen importlib._bootstrap>", line 931, in _sanity_check
SystemError: Parent module 'setuptools' not loaded, cannot perform relative import

Comme vous pouvez le voir, j'ai installé django en utilisant python3.5.

Cela semble fonctionner correctement avec python2.7 ...

Quelqu'un d'autre est-il au courant d'un moyen de contourner ce bogue, ou de quelque chose de stupide que j'ai fait dans mon environnement?

J'utilise debian stretch au lieu de buster, mais je ne sais pas si je suis encore prêt à mettre à niveau.

Réponses

19 timothy3001 Aug 31 2020 at 09:54

Quelque chose s'est produit dans la version 50 de setuptools.

Nous pourrions "résoudre" ce problème en rétrogradant setuptools vers 49.3.0 (et peut-être pip vers 20.2.1)

pip install setuptools==49.3.0 et pip install pip==20.2.1

Sachez cependant que cela ne devrait être qu'une solution temporaire!

10 DavidRenshaw Aug 31 2020 at 17:51

Il existe une solution de contournement temporaire décrite dans le journal des modifications setuputils :

export SETUPTOOLS_USE_DISTUTILS=stdlib
1 hd1 Aug 31 2020 at 00:29

Essayez d'utiliser la méthode approuvée dans python3, où venv fait partie de stdlib:

/usr/bin/python3 -m venv /home/isaac/.virtualenvs/foobar
/home/isaac/.virtualenvs/foobar/bin/pip install django
1 ErnstPlesiutschnig Aug 31 2020 at 09:43

J'ai eu un problème similaire. Je pense que c'est la version Django que vous avez installée avec pip. Pour moi, la combinaison de Python3.5 et Django 1.9 ne m'a pas donné cette erreur.

$ rm -r /home/isaac/.virtualenvs/foobar #Remove the content $ /usr/bin/python3 -m venv /home/isaac/.virtualenvs/foobar #Recreate your environment
$ cd /home/isaac/.virtualenvs/foobar $ source bin/activate #Activate the environment
$ pip -V #(my version is 8.1.1 -> 20.x ==current version) $ pip install django==1.9 #That version did not give an teh error
$ django-admin startproject yourprojectname #(worked nicely)

Alternative: mettez à niveau votre version Python> = 3.6 sur votre machine Ubuntu et vous êtes prêt à utiliser la dernière version de Django ici!

1 AlexHurko Sep 01 2020 at 00:44

Vous utilisez probablement setuptools 50.0.0. Il y a quelques problèmes avec cela.https://github.com/pypa/setuptools/issues/2356 Essayez de le déclasser.

pip installer setuptools == 49.6.0