Сбой CFFI в виртуальной среде Python (Linux) - попытка установить криптографический пакет в venv
При установке cffi в виртуальной среде возникают ошибки, но, похоже, установка. Являются ли эти ошибки действительно критическими, которые могут привести к сбою при установке криптографии (см. Далее ниже)?
pip install cffi==1.11.5
Загрузка / распаковка cffi==1.11.5
Загрузка файла cffi-1.11.5.tar.gz (438 КБ): загрузка 438 КБ
Запуск setup.py (путь:/[venv-install-directory]/build/cffi/setup.py) egg_info для пакета cffi
Загрузка / распаковка pycparser (из cffi==1.11.5)
Загрузка pycparser-2.18.tar.gz (245 КБ): 245 КБ загружено
Запуск setup.py (путь:/[venv-install-directory]/build/pycparser/setup.py) egg_info для пакета pycparser
предупреждение: нет ранее включенных файлов, соответствующих 'yacctab. 'найдено в каталоге' tests '
предупреждение: нет ранее включенных файлов, соответствующих 'lextab. 'найдено в каталоге' tests '
предупреждение: нет ранее включенных файлов, соответствующих 'yacctab. 'найдено в каталоге'examples'
предупреждение: нет ранее включенных файлов, соответствующих 'lextab. 'найдено в каталоге'examples'
Установка собранных пакетов: cffi, pycparser
Запуск setup.py для установки cffi
построение расширения _cffi_backend
gcc -pthread -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I / usr / local / lib / libffi-3.2.1 / include -I / [venv -install-directory] / include -I / usr / local / include / python3.4m -cc / _cffi_backend.c -o build / temp.linux-i686-3.4 / c / _cffi_backend.o
gcc -pthread -shared build / temp.linux-i686-3.4 / c / _cffi_backend.o -L / usr / local / lib -lffi -o build / lib.linux-i686-3.4 / _cffi_backend.cpython-34m.so Может не найден каталог.egg-info в записи установки для cffi==1.11.5
Запуск setup.py install для pycparser
предупреждение: нет ранее включенных файлов, соответствующих 'yacctab. 'найдено в каталоге' tests '
предупреждение: нет ранее включенных файлов, соответствующих 'lextab. 'найдено в каталоге' tests '
предупреждение: нет ранее включенных файлов, соответствующих 'yacctab. 'найдено в каталоге'examples'
предупреждение: нет ранее включенных файлов, соответствующих 'lextab. 'найдено в каталоге'examples'
Построить лексические / парсинговые таблицы
Не удалось найти каталог.egg-info в записи установки для pycparser (из cffi==1.11.5)
Успешно установлен CFFI Pycparser
Убираться...
Эта проблема вызывает недоумение, поскольку она работает в моей локальной системе, но при создании виртуальной среды при попытке установить криптографию возникает следующая ошибка:
File "[path-to-venv]/build/cryptography/src/_cffi_src/utils.py", line 57, in build_ffi ffi = FFI() File "[path-to-venv]/lib/python3.4/site-packages/cffi/api.py", line 46, in __init__ import _cffi_backend as backend ImportError: [path-to-venv]/lib/python3.4/site-packages/_cffi_backend.cpython-34m.so: undefined symbol: __syscall_error
Виртуальная среда буквально создает копию локальной среды, не так ли?
Так как же "_cffi_backend" не работает в виртуальной среде, когда нет проблем с самой установкой системы? Я не понимаю, как это могло произойти в первую очередь.
Кто-нибудь успешно справился с такой проблемой? Если у вас есть идеи или решение, пожалуйста, будьте конкретны, поскольку я уже потратил довольно много часов, пытаясь найти решения, которые до сих пор не работали.
Помимо прочего, я уже пытался скомпилировать и установить libffi из исходного кода до создания виртуальной среды: https://sourceware.org/libffi/
Существуют ли другие альтернативы для создания виртуальных сред, которые не требуют переустановки каждого пакета - например, где можно просто использовать существующую установленную установку и скопировать ее непосредственно в виртуальную среду (или аналогичным способом, который позволяет избежать попадания в ад зависимости)?
Это кажется простой проблемой, которую нужно решить, как только вы поймете реальную проблему. Если я не могу понять это, я не могу развернуть свой проект, так как он решающим образом зависит от криптографии. Поэтому заранее спасибо за любые идеи, которые могут у вас возникнуть, которые помогут решить эту проблему.
1 ответ
Ответом в этом случае было обновление pip - внутри виртуальной среды.
Полные инструкции:
создать виртуальную среду.
python3.4 -m venv [venv_name_here]
войти в виртуальную среду.
cd [venv_name_here]
активировать виртуальную среду.
Исходный бин / активировать
4. обновить пункт.
pip install --upgrade pip
установить setuptools.
pip install setuptools == 39.1.0
установить pyparser.
pip install pyparser == 1.0
pip install pyparsing == 2.1.0установить CFFI.
pip install cffi == 1.11.5
установить криптографию.
криптография pip install ==2.2.2
Завершает установку отлично, без ошибок.
Обратите внимание, что вам может потребоваться изменить номера версий, в зависимости от вывода команды "pip freeze" (т.е. посмотрите на ваш файл "needs.txt"):
pip freeze -l> needs.txt