Я использую 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 , поэтому он не был перезаписан.
_ctypes
не был построен, потому чтоlibffi-dev
зависимость была недоступна. Вместо этого рассмотрите возможность использования deadsnakes PPA .Ответы:
Установка
libffi-dev
и повторная установка python3.7 устранили проблему для меня.для чистой сборки
libffi-dev
требуется py 3.7 , иначе ничего не получитсяПри использовании RHEL / Fedora:
или
При использовании Debian / Ubuntu:
источник
libffi-dev
но все еще получаю эту ошибкуldconfig
команду , чтобы загрузить новыйlibffi.so
. Основная цельapt-get install libffi-dev
- установить файл с именем,libffi.so
который вы можете проверить с помощьюdpkg -L libffi-dev
@tushar_ecmcpyenv install
), вам нужно будет перекомпилировать дистрибутив после установки пакета.В новом образе Debian клонируем https://github.com/python/cpython и запускаем:
Теперь выполните
configure
клонированный выше файл:Установил 3.7 и работает у меня.
НЕБОЛЬШОЕ ОБНОВЛЕНИЕ
Похоже, я сказал, что обновлю этот ответ, добавив еще несколько объяснений, и два года спустя мне нечего добавить.
python-dev
могут понадобиться определенные библиотеки .altinstall
вместоinstall
аргумента в команде make .Помимо этого, я предполагаю, что выбор будет заключаться в том, чтобы либо прочитать кодовую базу cpython в поисках
#include
директив, которые необходимо выполнить, но то, что я обычно делаю, - это продолжаю пытаться установить пакет и просто продолжаю читать вывод, устанавливая необходимые пакеты, пока он не преуспевает.Напоминает мне историю инженера, менеджера и программиста, чья машина катится с холма .
источник
python3-dev
вместоpython-dev
.python-dev
кажется дляpython2
.sudo apt-get
? В этом нет никакого смысла.sudo apt-get
обрабатывает загрузку уже скомпилированного кода, так почему вы загружаете код, а затем не используете его?sudo
инструкции устанавливают предварительные условия для сборки загруженного вами исходного кода../configure
иmake
материал требует те вещи , которые будут установлены.Если вы используете pyenv и получаете ошибку «Нет модуля с именем '_ctypes'» (например, я) в Debian / Raspbian / Ubuntu, вам необходимо выполнить следующие команды:
Ставьте свою версию python вместо 3.7.6
источник
pyenv
, чтобы действительно заставить все работать. Использовать pyenv намного проще, чем брать исходный код и делать всеmake
наверняка.Подробные инструкции по установке Python 3.7 в CentOS или любой другой Linux-машине с Redhat:
источник
Думал, что добавлю установки Centos:
Проверить версию python:
python3 -V
Создайте virtualenv:
virtualenv -p python3 venv
источник
Я бегу в эту ошибку , когда я попытался установить Python 3.7.3 в Ubuntu 18.04 с помощью следующей команды:
$ pyenv install 3.7.3
. После запуска установка прошла успешно$ sudo apt-get update && sudo apt-get install libffi-dev
(как предлагается здесь ). Вопрос там решился .источник
Ни одно из решений не помогло. Вам нужно снова перекомпилировать свой питон; как только все необходимые пакеты будут полностью установлены.
Следить за этим:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
источник
Обратитесь к этой теме или этой теме , для индивидуальной установки libffi, Python3.7 сложно найти расположение библиотеки libffi. Альтернативный метод - установить
CONFIGURE_LDFLAGS
переменную, например, в MakefileCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.источник
Мое решение: установка libffi-dev с помощью apt-get не помогла. Но это помогло: установка libffi из исходного кода, а затем установка Python 3.8 из исходного кода.
Моя конфигурация: Ubuntu 16.04 LTS Python 3.8.2
Шаг за шагом:
Я получил сообщение об ошибке «ModuleNotFoundError: No module named '_ctypes'» при запуске отладчика из Visual Studio Code и во время работы
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
файле README.md от libffi упоминается, что также необходимы autoconf и automake. Они уже были установлены в моей системе../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
После этого моя установка Python могла найти _ctypes.
источник
Это решило ту же ошибку для меня в Debian :
и снова скомпилировать
Ссылка: issue31652
источник
Если вы не против использования Miniconda , необходимые внешние библиотеки и _ctypes установлены по умолчанию. Это занимает больше места и может потребовать использования более старой версии Python (например, 3.7.6 вместо 3.8.2 на момент написания этой статьи).
источник
Вам необходимо загрузить недостающие модули php3 (Python3) из диспетчера пакетов. Если у вас Ubuntu, я рекомендую
Synaptic Package Manager
:Там вы можете просто искать недостающие модули. найдите ctypes и установите все пакеты. Затем перейдите в свой каталог Python и выполните
Это должно решить вашу проблему.
источник
У меня была такая же проблема. Ни одно из вышеперечисленных решений не помогло мне. Ключевой проблемой было то, что у меня не было корневого доступа. Итак, сначала я загружаю исходный код libffi. Затем я скомпилировал его обычными командами:
Затем я перекомпилировал Python, используя
В моем случае home / user123 / Softwares / library / libffi / installation / lib64 - это путь к установочному каталогу LIBFFI, в котором находится libffi.so. И / home / user123 / Softwares / Python / installation3 / - это путь к каталогу установки Python. Измените их в соответствии с вашим случаем.
источник
Если вы делаете что-то, никто здесь вас не послушает, потому что «вы делаете это неправильно», но вы должны делать это «не так» по слишком глупым причинам (например, в моем случае это быстро превращается в фол слова о ком-то из команды DevOps с избыточным весом матери), сначала вам нужно:
Получите libffi и установите его в пользовательскую область установки обычным способом.
Затем вернитесь к исходному тексту Python 3 и найдите эту часть кода в setup.py на верхнем уровне каталога исходного кода Python.
и добавьте строку, которую я отметил выше, с комментарием. Почему это необходимо, и почему нет способа заставить configure уважать '--without-system-ffi` на платформах Linux, возможно, я узнаю, почему это «не поддерживается» в ближайшие пару часов, но все имеет работал с тех пор. В противном случае, удачи ... YMMV.
ЧТО ЭТО ДЕЛАЕТ: просто переопределяет существующую логику и заставляет команду компоновки компилятора добавить «-lffi», что является всем, что ей действительно нужно. Если у вас установлена пользовательская библиотека, она, вероятно, отлично определяет заголовки, если вы
PKG_CONFIG_PATH
включаетеpath/to/your/install/root/lib/pkgconfig
.источник