Having trouble with pyodbc on django

I am working on django project. And testing Sql Server database. I am using korean linux hosting service gabia. So I don't have any root access. Even this hosting company blocked yum and rpm.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: libodbc.so.2: cannot open shared object file: No such file or directory

I am keep having this kind of trouble when I import pyodbc. But I can fully use pymssql module.

I have no idea what is wrong with this linux...

This is when I connect django to mssql database with mssql-django package.


Traceback (most recent call last):
  File "/web/.local/lib/python3.9/site-packages/mssql/base.py", line 16, in <module>
    import pyodbc as Database
ImportError: libodbc.so.2: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/wsgiref/handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "/web/.local/lib/python3.9/site-packages/django/core/handlers/wsgi.py", line 130, in __call__
    signals.request_started.send(sender=self.__class__, environ=environ)
  File "/web/.local/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 176, in send
    return [
  File "/web/.local/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/web/.local/lib/python3.9/site-packages/django/db/__init__.py", line 46, in reset_queries
    for conn in connections.all():
  File "/web/.local/lib/python3.9/site-packages/django/utils/connection.py", line 76, in all
    return [self[alias] for alias in self]
  File "/web/.local/lib/python3.9/site-packages/django/utils/connection.py", line 76, in <listcomp>
    return [self[alias] for alias in self]
  File "/web/.local/lib/python3.9/site-packages/django/utils/connection.py", line 62, in __getitem__
    conn = self.create_connection(alias)
  File "/web/.local/lib/python3.9/site-packages/django/db/utils.py", line 208, in create_connection
    backend = load_backend(db["ENGINE"])
  File "/web/.local/lib/python3.9/site-packages/django/db/utils.py", line 113, in load_backend
    return import_module("%s.base" % backend_name)
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/web/.local/lib/python3.9/site-packages/mssql/base.py", line 18, in <module>
    raise ImproperlyConfigured("Error loading pyodbc module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading pyodbc module: libodbc.so.2: cannot open shared object file: No such file or directory

  • This linux is CentOS 7

I've tried to install unixODBC on /web/.local directory which I can access into. And I successfully executed unixodbc alone, but not with python pyodbc.

I failed to install FreeTDS because I cannot find any way to install FreeTDS on this linux with tar file.

I wonder if I can change the installation path written on pyodbc package file. If I can, then I can fix this problem with changing the installation root of unixODBC to my accessable directory.

Back to Top