Django, python3, à l'installation, j'obtiens: «Le module parent 'setuptools' n'est pas chargé»
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
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!
Il existe une solution de contournement temporaire décrite dans le journal des modifications setuputils :
export SETUPTOOLS_USE_DISTUTILS=stdlib
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
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!
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