Python - Can't open lib 'libtdsodbc.so' : file not found
If anyone else runs into this hurdle, check out this blog post.
https://emacstragic.net/2017/11/06/mssql-odbc-client-on-debian-9-stretch/
Essentially, I had to target a specific libssl version for it to work.
Looking at the installed versions i found:
ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.1 | grep 'not found'
libcrypto.so.1.0.0 => not found
libssl.so.1.0.0 => not found
and manually installing a previous version fixed the issue
wget "http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u7_amd64.deb"
sudo apt install ./libssl1.0.0_1.0.1t-1+deb8u7_amd64.deb
Can't open lib 'ODBC Driver 13 for SQL Server'? Sym linking issue?
Running:
odbcinst -j
It yielded:
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/emehex/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Instead of copying the files to the /etc/
directory (not sure why unixODBC thought they were there) I created a symbolic link to each file:
sudo ln -s /usr/local/etc/odbcinst.ini /etc/odbcinst.ini
sudo ln -s /usr/local/etc/odbc.ini /etc/odbc.ini
This solved the problem.
Can't open lib ODBC Driver 17 OSX
If anyone ever gets the same problem as I have, you have to use the solution found at:
Can't open lib 'ODBC Driver 13 for SQL Server'? Sym linking issue?
Linux python3 - Can't open lib 'SQL Server'
I also recommend you install the ODBC Driver and then try to use pyodbc. I am assuming you are on an Ubuntu 15.04+ machine.
To install the ODBC Driver follow the following instructions:
sudo su
wget https://gallery.technet.microsoft.com/ODBC-Driver-13-for-Ubuntu-b87369f0/file/154097/2/installodbc.sh
sh installodbc.sh
Once you do that, install pyodbc using pip and try the following script:
import pyodbc
server = 'tcp:myserver.database.windows.net'
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
print row
row = cursor.fetchone()
Let me know how that goes.
Cheers,
Meet
PyODBC : can't open the driver even if it exists
I also had the same problem on Ubuntu 14 after following the microsoft tutorial for SQL Server Linux ODBC Driver.
The file exists and after running an ldd, it showed there were dependencies missing:
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0)
CXXABI_1.3.8' not found (required by
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version
after searching for a while I found its because Ubuntu's repo didnt have GLIBCXX on version 3.4.20, it was at 3.4.19.
I then added a repo to Ubuntu, updated it and forced it to upgrade libstdc++6
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6
Problem solved, tested with isql:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
After that I tried testing using pdo_odbc (PHP), it then gave me the same driver not found error.
To solve this I had to create a symbolic link to fix libodbcinst.so.2
:
sudo ln -s /usr/lib64/libodbcinst.so.2 /lib/x86_64-linux-gnu/libodbcinst.so.2
Trying to query SQL Server from django running on Linux - Can't open lib '/path/to/libtdsodbc.so'
Apologies for the delay in answering, from what I remember I couldn't answer my own question due to having a new account:
@bradley.ayers comment in PIL - libjpeg.so.8: cannot open shared object file: No such file or directory pointed me in the right direction.
Thanks all for your help
Related Topics
How to Get the Full Path of the Current File'S Directory
How to Prompt For User Input and Read Command-Line Arguments
CSS Not Loading Wrong Mime Type Django
How to Use CSS Selectors to Retrieve Specific Links Lying in Some Class Using Beautifulsoup
How to Simulate Input to Stdin for Pyunit
When Using Os.Execlp, Why 'Python' Needs 'Python' as Argv[0]
Executing Command Using "Su -L" in Ssh Using Python
Get All Modules/Packages Used by a Python Project
Python Gdal 2.1 Installation on Ubuntu 16.04
How to Close a Socket Left Open by a Killed Program
Get Mouse Deltas Using Python! (In Linux)
Running Python Script as Another User
Why am I Getting Socket.Gaierror: [Errno -2] from Python Httplib
Python 2.7 Cannot Import Pyqt4
Can Python Detect Which Os Is It Running Under
How to Perform Low Level I/O on a Linux Device File in Python