TransWikia.com

Django, python3, on install I get: "Parent module 'setuptools' not loaded"

Stack Overflow Asked by isaaclw on February 23, 2021

I see lots of errors and suggestions about Parent module '' not loaded, ...

I don’t see any about specifically "out of the box" django 3.5.

$ 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

As you can see, I installed django using python3.5.

It seems to work fine with python2.7…

Is anyone else aware of a way around this bug, or something silly I did in my environment?

I am using debian stretch instead of buster, but I’m not sure if I’m ready to upgrade yet.

5 Answers

Something happened in version 50 of setuptools.

We could "solve" this problem by downgrading setuptools to 49.3.0 (and maybe pip to 20.2.1)

pip install setuptools==49.3.0 and pip install pip==20.2.1

Be aware though that this should only be a temporary solution!

Correct answer by timothy3001 on February 23, 2021

Probably you are using setuptools 50.0.0. There are some issues with it. https://github.com/pypa/setuptools/issues/2356 Try to downgrade it.

pip install setuptools==49.6.0

Answered by AlexHurko on February 23, 2021

There is a temporary workaround described in the setuputils changelog:

export SETUPTOOLS_USE_DISTUTILS=stdlib

Answered by David Renshaw on February 23, 2021

I had a similar issue. I think it is the Django version you installed with pip. For me combination of Python3.5 and Django 1.9 did not give me that error.

$ 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: Upgrade your Python version >= 3.6 on your Ubuntu machine and your're ready to go with the latest Django version Here!

Answered by Ernst Plesiutschnig on February 23, 2021

Try using the approved way in python3, where venv ia part of the stdlib:

/usr/bin/python3 -m venv /home/isaac/.virtualenvs/foobar
/home/isaac/.virtualenvs/foobar/bin/pip install django

Answered by hd1 on February 23, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP