PyTango & Python 3.5: undefined symbol: PyClass_Type [SOLVED]

Dear pyTango gurus,
I'm trying to make PyTango 9.2 work with Python 3.5 (from miniconda3) under Linux (CentOS 6). First thing I did was to recompile the whole Tango software chain with gcc-4.4.6 (CentOS 6 default compiler). I choose to install it into the miniconda3 directory in order to obtain a fully independent package. I then compiled boost 1.62 to satisfy the PyTango dependency against boost-python. The final step was to compile PyTango itself using the following command:

export PREFIX=$HOME/miniconda3
export PATH=$HOME/miniconda3/bin
export [TANGO, ZMQ, …]_ROOT=$PREFIX
export BOOST_ROOT=$HOME/boost-1.62-install
python ./setup.py install –prefix=$PREFIX
So far, everything was progressing smoothly. But, when I try to import PyTango I get: the following error:
ImportError: /home/informatique/ica/leclercq/miniconda3/lib/libboost_python.so.1.62.0: undefined symbol: PyClass_Type

Edit: boost 1.62 was the origin of the problem. Switching to boost 1.61 fixes the problem.

BTW, anaconda provides a binary distribution of boost:
conda install boost


Edited 7 years ago
Hi Nicolas,

Pytango is actually built and tested using TravisCI + conda with python 2.7, 3.4 and 3.5.

You might want to have a look at the travis config file:

install:
  # Install build dependencies
  - conda install –yes boost
  - conda install –yes -c vxgmichel tango=9.2.2
  - conda install –yes numpy  # Not a strong requirement yet
  # Use conda prefix as root for the dependencies
  - export BOOST_ROOT=$CONDA_PREFIX TANGO_ROOT=$CONDA_PREFIX ZMQ_ROOT=$CONDA_PREFIX OMNI_ROOT=$CONDA_PREFIX

Cheers,
/Vincent
Hi Vincent,
Ok, you're using the boost lib delivered by conda - which is 1.61.
I now know where I can obtain the right version of PyTango' dependencies smile
Thanks,
N.
 
Register or login to create to post a reply.