I am installing python 3.5, django 1.10 and psycopg2 2.7.1 on Amazon EC2 server in order to use a Postgresql database. I am using python 3 inside a virtual environment, and followed the classic installation steps:
cd /home/mycode
virtualenv-3.5 p3env
source p3env/bin/activate
pip install django
cd kenbot
django-admin startproject kenbot
pip install psycopg2
Then I have edited the settings.py file in my project to define the DATABASE settings:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'deleted',
'USER': 'deleted',
'PASSWORD': 'deleted',
'HOST': 'deleted',
'PORT': '5432',
}
Finally I type (while still in the virtual environment):
python manage.py makemigrations
And get the following errors:
Traceback (most recent call last):
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/backends/postgresql/base.py", line 20, in <module>
import psycopg2 as Database
ImportError: No module named 'psycopg2'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 341, in execute
django.setup()
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/__init__.py", line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/apps/registry.py", line 108, in populate
app_config.import_models(all_models)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/apps/config.py", line 199, in import_models
self.models_module = import_module(models_module_name)
File "/home/mycode/p3env/lib64/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
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 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 662, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/contrib/auth/models.py", line 4, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/contrib/auth/base_user.py", line 52, in <module>
class AbstractBaseUser(models.Model):
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/models/base.py", line 119, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/models/base.py", line 316, in add_to_class
value.contribute_to_class(cls, name)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/models/options.py", line 214, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/__init__.py", line 33, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/utils.py", line 211, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/utils.py", line 115, in load_backend
return import_module('%s.base' % backend_name)
File "/home/mycode/p3env/lib64/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/home/mycode/p3env/local/lib/python3.5/dist-packages/django/db/backends/postgresql/base.py", line 24, in <module>
raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2'
I have not found this issue anywhere on stackoverflow. One point that may be relevant, when I browse the directory of my virtual environment, I notice that django is installed in /home/mycode/p3env/lib/python3.5/dist-packages whereas psysopg2 is in /home/mycode/p3env/lib64/python3.5/dist-packages.
Thanks for your help!
The most frequent source of this error is that you haven't installed psycopg2 explicitly with pip install psycopg2 . Alternatively, you may have different Python versions on your computer, and psycopg2 is not installed for the particular version you're using.
The Python "ModuleNotFoundError: No module named 'psycopg2'" occurs when we forget to install the psycopg2-binary module before importing it or install it in an incorrect environment. To solve the error, install the module by running the pip install psycopg2-binary command.
Project description Psycopg is the most popular PostgreSQL database adapter for the Python programming language. Its main features are the complete implementation of the Python DB API 2.0 specification and the thread safety (several threads can share the same connection).
As suggested by @dentemm: the issue was resolved by copying all the psysopg2 directories from their current location in the lib64 directory, to the directory where django was installed /home/mycode/p3env/lib/python3.5/dist-packages.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With