Synss / python-mbedtls

Cryptographic library with an mbed TLS back end
MIT License
79 stars 28 forks source link

fails to run #61

Closed folkertvanheusden closed 2 years ago

folkertvanheusden commented 2 years ago

$ sudo pip3 install python-mbedtls WARNING: Running pip install with root privileges is generally not a good idea. Try pip3 install --user instead. Collecting python-mbedtls Using cached https://files.pythonhosted.org/packages/bc/ba/23dc1786580315753a0738b90b5679de2487e3fc802e360de42eacc956c3/python-mbedtls-1.7.0.tar.gz Requirement already satisfied: certifi in /usr/local/lib/python3.6/site-packages (from python-mbedtls) Requirement already satisfied: typing_extensions in /usr/local/lib/python3.6/site-packages (from python-mbedtls) Installing collected packages: python-mbedtls Running setup.py install for python-mbedtls ... done Successfully installed python-mbedtls-1.7.0

$ python3 Python 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type "help", "copyright", "credits" or "license" for more information.

from mbedtls._tls import _enable_debug_output, _set_debug_level Traceback (most recent call last): File "", line 1, in File "/usr/local/lib64/python3.6/site-packages/mbedtls/init.py", line 15, in import mbedtls.tls as tls File "/usr/local/lib64/python3.6/site-packages/mbedtls/tls.py", line 17, in from ._tls import ( ImportError: /usr/local/lib64/python3.6/site-packages/mbedtls/_tls.cpython-36m-x86_64-linux-gnu.so: undefined symbol: mbedtls_cipher_set_padding_mode

This is with both mbedtls-2.16.12 as well as mbedtls-2.28.0.

Synss commented 2 years ago

Do you really need Python 3.6? It has reached its end of life a few month ago already.

I would recommend upgrading to a supported version of Python and install a wheel. This is the easiest way and there are manylinux1 and manylinux10 wheels available.

Anyway, if mbedtls is not in the standard paths such as /usr/lib or maybe /usr/local/lib, you will need to set and export LD_LIBRARY_PATH accordingly.

folkertvanheusden commented 2 years ago

Hi Mathias,

Python 3.6 is still the latest version in centos 7 (CentOS Linux release 7.9.2009 (Core)), that's why a wheel is not possible right now.

mbedtls is in the path:

$ ls /usr/local/lib libdmalloc.a libdmallocth.a libmbedcrypto.a libmbedtls.a libmbedx509.a python3.6 $ ld --verbose | grep SEARCH_DIR SEARCH_DIR("=/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");

Also:

from .tls import ( ImportError: /usr/local/lib64/python3.6/site-packages/mbedtls/ tls.cpython-36m-x86_64-linux-gnu.so: undefined symbol: mbedtls_cipher_set_padding_mode

I believe it can find the/a library, but the mbedtls_cipher_set_padding_mode symbol is not in it.

On Wed, Apr 6, 2022 at 7:01 PM Mathias Laurin @.***> wrote:

Do you really need Python 3.6? It has reached its end of life https://peps.python.org/pep-0494/ a few month ago already.

I would recommend upgrading to a supported version of Python and install a wheel https://pypi.org/project/python-mbedtls/#files. This is the easiest way and there are manylinux1 and manylinux10 wheels available.

Anyway, if mbedtls is not in the standard paths such as /usr/lib or maybe /usr/local/lib, you will need to set and export LD_LIBRARY_PATH accordingly.

— Reply to this email directly, view it on GitHub https://github.com/Synss/python-mbedtls/issues/61#issuecomment-1090496700, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN5IW4OQCWZUQ634NEHS43VDW7ORANCNFSM5SVIQKUA . You are receiving this because you authored the thread.Message ID: @.***>