Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Undefined symbol in turbodbc_arrow_support.so - pip install on Debian #218

Closed
peter-wimsey opened this issue Jun 24, 2019 · 6 comments
Closed

Comments

@peter-wimsey
Copy link

Hi,

I am trying to build a docker image of turbodbc with Arrow support but get the following error:

Python 3.7.3 (default, Jun 11 2019, 01:05:09) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import turbodbc_arrow_support
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/python3.7/site-packages/turbodbc_arrow_support.cpython-37m-x86_64-linux-gnu.so: undefined symbol: _ZN5arrow6StatusC1ENS_10StatusCodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

Any ideas what's going wrong here? Some more info below.

Thanks


# pip list
Package    Version
---------- -------
numpy      1.16.4 
pip        19.1.1 
pyarrow    0.13.0 
pybind11   2.3.0  
setuptools 41.0.1 
six        1.12.0 
turbodbc   3.1.1  
wheel      0.33.4 

Dockerfile:

FROM python:3.7

USER root

ARG http_proxy

RUN export http_proxy=$http_proxy https_proxy=$http_proxy \
    && apt-get update \
    && apt-get install -y build-essential libboost-all-dev unixodbc-dev python3-dev

RUN export http_proxy=$http_proxy https_proxy=$http_proxy \
    && pip install numpy pyarrow turbodbc
@davlee1972
Copy link

I'm seeing the same error with Turbodbc 3.2.0 and Python 3.6. I was able to successfully build turbodbc using conda, but it was giving me a No Arrow Extension support error when trying to do a "arrow_table = cursor.fetchallarrow()" call. I traced the error to "import turbodbc_arrow_support" failure as well.

ImportError: /usr/local/Anaconda3-5.3.1-Linux-x86_64/envs/pyspark-3-6/lib/python3.6/site-packages/turbodbc_arrow_support.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN5arrow6StatusC1ENS_10StatusCodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

@davlee1972
Copy link

Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 19:07:31)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyarrow as pa
>>> import turbodbc_arrow_support
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /usr/local/Anaconda3-5.3.1-Linux-x86_64/envs/pyspark-3-6/lib/python3.6/site-packages/turbodbc_arrow_support.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN5arrow6StatusC1ENS_10StatusCodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

@davlee1972
Copy link

davlee1972 commented Aug 9, 2019

Got it working. I think the problem was that I pulled pybind11 and six from pip instead of conda as part of the turbodbc install when running "pip install turbodbc" in a conda environment

@xhochy
Copy link
Collaborator

xhochy commented Aug 20, 2019

@davlee1972 When running in a conda environment, you should always install turbodbc with conda install turbodbc -c conda-forge. This should work much better than with using pip.

@peter-wimsey
Copy link
Author

Thanks @davlee1972, installing with conda did indeed fix the issue.

@alexkim-avant
Copy link

What do you recommend if I can only use pip to install turbodbc?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants