Ошибка импорта ctypes Python в virtualenv

При импорте ctypes появляется следующая ошибка, но только внутри моей виртуальной среды (Python 3.4).

>>> import ctypes
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.4/ctypes/__init__.py", line 7, in <module>
    from _ctypes import Union, Structure, Array
    ImportError: /home/user/Code/Python/venvs/main/lib/python3.4/lib-dynload/_ctypes.cpython-34m-x86_64-linux-gnu.so: undefined symbol: _PyTraceback_Add

Замораживание виртуальной машины:

beautifulsoup4==4.4.0
blessings==1.6
Django==1.8.4
image==1.4.1
Pillow==2.9.0
wheel==0.24.0

Как это исправить? Он работает на основном интерпретаторе python 3.4...

Ответ 1

Как описано eryksun, проблема, похоже, связана с известной ошибкой в 3.4. * версиях Python. Мне удалось решить эту проблему в Ubuntu 14.04 путем обновления до Python 3.5 после этого ответа:

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python3.5 python3.5-dev python3.5-venv
# create a python3.5 virtualenv
python3.5 -m venv venv
. ./venv/bin/activate
python -c 'import ctypes' # throws no errors as opposed to before

Правильное решение, в котором вы не зависите от сторонних PPA, должно состоять в том, чтобы перейти на версию ОС с более новой версией Python:)

Ответ 2

Попробуйте уничтожить и воссоздать свою виртуальную среду. В моем случае я создал виртуальную среду перед установкой зависимостей/незначительного обновления, и хотя виртуальный env имел символические ссылки на более новые файлы, была использована копия более старого интерпретатора малой версии.