Python3: ImportError: при использовании значения из модульной многопроцессорности нет модуля с именем "_ctypes"

Я использую Ubuntu и установил Python 2.7.5 и 3.4.0. В Python 2.7.5 я могу успешно назначить переменную x = Value('i', 2), но не в 3.4.0. Я получаю:

Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/lib/python3.4/multiprocessing/context.py", line 132, in Value
      from .sharedctypes import Value
   File "/usr/local/lib/python3.4/multiprocessing/sharedctypes.py", line 10, in <
module>
   import ctypes
   File "/usr/local/lib/python3.4/ctypes/__init__.py", line 7, in <module>
      from _ctypes import Union, Structure, Array
ImportError: No module named '_ctypes'

Я только что обновился до 3.3.2 через установку источника 3.4.0. Он установлен в /usr/local/lib/python3.4.

Правильно ли я обновился до Python 3.4?

Я заметил, что Python 3.4 установлен в usr/local/lib, а Python 3.3.2 все еще установлен в usr/lib, поэтому он не был перезаписан.

Ответ 1

Установка libffi-dev и переустановка python3.7 устранили проблему для меня.

для libffi-dev сборки py 3.7 libffi-dev, иначе позже произойдет сбой

При использовании RHEL/Fedora:

yum install libffi-devel

или же

sudo dnf install libffi-devel

Если вы используете Debian/Ubuntu:

sudo apt-get install libffi-dev

Ответ 2

На свежем образе Debian клонирование https://github.com/python/cpython и запуск:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

Теперь выполните файл configure клонированный выше:

./configure
make # alternatively 'make -j 4' will utilize 4 threads
sudo make altinstall

Получил 3.7 установлен и работает для меня.

БЕСПЛАТНОЕ ОБНОВЛЕНИЕ

Похоже, я сказал, что обновлю этот ответ еще несколькими объяснениями, а через два года мне нечего добавить.

  • этот пост объясняет, почему некоторые библиотеки, такие как python-dev могут быть необходимы.
  • этот пост объясняет, почему можно использовать altinstall вместо аргумента install в команде make.

Кроме этого, я думаю, что выбор будет либо прочитать кодовую базу cpython, ища директивы #include которые должны быть выполнены, но я обычно пытаюсь установить пакет и продолжаю читать вывод, устанавливая требуемые пакеты. пока это не удастся.

Напоминает мне историю Инженера, Менеджера и Программиста, чья машина катится вниз по склону.

Ответ 3

Подробные инструкции по установке Python 3.7 в CentOS или на любой Redhat Linux-машине:

  1. Загрузите Python с https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
  2. Извлечь содержимое в новую папку
  3. Открыть терминал в том же каталоге
  4. Запустите код ниже, шаг за шагом:
sudo yum -y install gcc gcc-c++ 
sudo yum -y install zlib zlib-devel
sudo yum -y install libffi-devel 
./configure
make
make install

Ответ 4

Думаю, я бы добавил установки Centos:

sudo yum -y install gcc gcc-c++ 
sudo yum -y install zlib zlib-devel
sudo yum -y install libffi-devel 

Проверьте версию python:

python3 -V

Создать virtualenv:

virtualenv -p python3 venv

Ответ 5

Обратитесь к этой теме, для индивидуальной установки libffi Python3.7 трудно найти расположение библиотеки libffi. Альтернативный метод - установить переменную CONFIGURE_LDFLAGS в Makefile, например, CONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64".

Ответ 7

Установка sudo apt-get update && sudo apt-get install libffi-dev успешно после запуска sudo apt-get update && sudo apt-get install libffi-dev (как предлагается здесь). Проблема была решена там.