LINUX.ORG.RU
ФорумAdmin

Совместимость интерпретатора с библиотеками

 , , ,


0

2

Всем привет.

У меня из коробки, в убунте, стоит python2.7. Появилась необходимость в библиотеке OpenSSL, которую я поставил с помощью apt-get install python-openssl.

Она установилась в /usr/local/bin/python2.7/dist-packages/OpenSSL. Но при этом, директория не находится, по умолчанию, в sys.path. Я её добавил с помощью sys.path.insert(1, /usr/local/bin/python2.7/dist-packages/) и библиотека начала находится при import'е, однако возникла следующая ошибка:

>>> import OpenSSL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/rand.py", line 11, in <module>
    from OpenSSL._util import (
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 13, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: /usr/local/lib/python2.7/dist-packages/_cffi_backend.so: undefined symbol: PyUnicodeUCS4_AsASCIIString
Я так понимаю, что это несовместимость библиотеки с интерпретатором. Т.к. питон установлен с UCS2, а библиотека рассчитывает на UCS4. Как можно безболезненно выйти из ситуации?

★★★

Ответ на: комментарий от panter_dsd
sudo apt-get remove python-openssl
sudo pip uninstall pyopenssl
sudo pip install pyopenssl
>>> import OpenSSL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named OpenSSL
>>> import sys
>>> sys.path.insert(1, '/usr/local/lib/python2.7/dist-packages')
>>> import OpenSSL
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "OpenSSL/rand.py", line 11, in <module>
    from OpenSSL._util import (
  File "OpenSSL/_util.py", line 6, in <module>
    from cryptography.hazmat.bindings.openssl.binding import Binding
  File "cryptography/hazmat/bindings/openssl/binding.py", line 13, in <module>
    from cryptography.hazmat.bindings._openssl import ffi, lib
ImportError: ./_cffi_backend.so: undefined symbol: PyUnicodeUCS4_AsASCIIString
VirRaa ★★★ ()
Ответ на: комментарий от VirRaa

поставь python-virtualenv потом

virtualenv --no-site-packages testenv
source testenv/bin/activate
pip install pyopenssl
и теоретически pip скачает и соберет его тебе. если конечно стоят компилятор си, хидеры для libssl

Yur4eg ★★ ()

Появилась необходимость в библиотеке OpenSSL, которую я поставил с помощью apt-get install python-openssl.
Она установилась в /usr/local/bin/python2.7/dist-packages/OpenSSL

Топик под снос за 4.2, автору устный выговор.

С советующими pip я вообще не знаю, что делать.

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

С советующими pip я вообще не знаю, что делать.

Усадить на php писать.

ei-grad ★★★★★ ()

Переставь систему и посмотри версию python'а. И в sys.path грязные свои руки не суй.

ei-grad ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.