Estoy usando Ubuntu y he instalado Python 2.7.5 y 3.4.0. En Python 2.7.5 puedo asignar con éxito una variable x = Value('i', 2)
, pero no en 3.4.0. Estoy obteniendo:
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'
Acabo de actualizar a 3.3.2 mediante la instalación de la fuente de 3.4.0. Se instaló en /usr/local/lib/python3.4 .
¿Actualicé correctamente a Python 3.4?
Una cosa que noté es que Python 3.4 está instalado en usr / local / lib , mientras que Python 3.3.2 todavía está instalado en usr / lib , por lo que no se sobrescribió.
_ctypes
no se creó porque lalibffi-dev
dependencia no estaba disponible. Considere usar el PPA de deadsnakes en su lugar.Respuestas:
La instalación
libffi-dev
y reinstalación de python3.7 me solucionó el problema.para construir limpiamente py 3.7
libffi-dev
se requiere o de lo contrario fallarán las cosas posterioresSi usa RHEL / Fedora:
o
Si usa Debian / Ubuntu:
fuente
libffi-dev
pero sigo recibiendo este errorldconfig
para cargar el nuevolibffi.so
. El propósito principal deapt-get install libffi-dev
es instalar un archivo llamadolibffi.so
que puede verificar pordpkg -L libffi-dev
@tushar_ecmcpyenv install
), deberá volver a compilar la distribución después de instalar el paquete.En una nueva imagen de Debian, clona https://github.com/python/cpython y ejecuta:
Ahora ejecute el
configure
archivo clonado arriba:Tengo 3.7 instalado y funcionando para mí.
LIGERA ACTUALIZACIÓN
Parece que dije que actualizaría esta respuesta con una explicación más y dos años después no tengo mucho que agregar.
python-dev
podrían ser necesarias.altinstall
lugar deinstall
en el comando make .Aparte de eso, supongo que la opción sería leer el código base de cpython en busca de
#include
directivas que deban cumplirse, pero lo que suelo hacer es seguir intentando instalar el paquete y seguir leyendo la salida instalando los paquetes necesarios hasta que tiene éxito.Me recuerda la historia del ingeniero, el gerente y el programador cuyo automóvil rueda cuesta abajo .
fuente
python3-dev
lugar depython-dev
.python-dev
parece parapython2
.sudo apt-get
? Eso simplemente no tiene ningún sentido.sudo apt-get
maneja la descarga de código ya compilado, entonces, ¿por qué descarga el código y luego no lo usa?sudo
declaraciones son requisitos previos de instalación para poder construir el código fuente que descargaste. the./configure
andmake
stuff requiere que esas cosas estén instaladas.Si usa pyenv y obtiene el error "Ningún módulo llamado '_ctypes'" (como yo) en Debian / Raspbian / Ubuntu, debe ejecutar estos comandos:
Pon tu versión de Python en lugar de 3.7.6
fuente
pyenv
de para que las cosas realmente funcionen. Usar pyenv es mucho más fácil que tomar el código fuente y hacer todas lasmake
cosas con seguridad.Pasos detallados para instalar Python 3.7 en CentOS o cualquier máquina linux redhat:
fuente
Pensé que agregaría las instalaciones de Centos:
Verifique la versión de Python:
python3 -V
Crea virtualenv:
virtualenv -p python3 venv
fuente
Me encuentro con este error cuando he intentado instalar Python 3.7.3 en Ubuntu 18.04 con el siguiente comando:
$ pyenv install 3.7.3
. La instalación se realizó correctamente después de la ejecución$ sudo apt-get update && sudo apt-get install libffi-dev
(como se sugiere aquí ). Allí se solucionó el problema .fuente
Ninguna solución funcionó. Tienes que volver a compilar tu python; una vez que todos los paquetes necesarios estuvieran completamente instalados.
Sigue esto:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
fuente
Consulte este hilo , para la instalación personalizada de libffi, es difícil para Python3.7 encontrar la ubicación de la biblioteca de libffi. Un método alternativo es establecer la
CONFIGURE_LDFLAGS
variable en el Makefile, por ejemploCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.fuente
Mi solución: instalar libffi-dev con apt-get no ayudó. Pero esto ayudó: instalar libffi desde la fuente y luego instalar Python 3.8 desde la fuente.
Mi configuración: Ubuntu 16.04 LTS Python 3.8.2
Paso a paso:
Recibí el mensaje de error "ModuleNotFoundError: Ningún módulo llamado '_ctypes'" al iniciar el depurador desde Visual Studio Code y al ejecutarlo
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
El archivo README.md de libffi menciona que autoconf y automake también son necesarios. Ya estaban instalados en mi sistema../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
Después de eso, mi instalación de Python pudo encontrar _ctypes.
fuente
Esto me resolvió el mismo error en Debian :
y compila de nuevo
Referencia: issue31652
fuente
Si no le importa usar Miniconda , las bibliotecas externas necesarias y _ctypes se instalan de forma predeterminada. Toma más espacio y puede requerir el uso de una versión moderadamente anterior de Python (por ejemplo, 3.7.6 en lugar de 3.8.2 al momento de escribir este artículo).
fuente
Tiene que cargar los módulos php3 (Python3) que faltan desde el administrador de paquetes. Si tienes Ubuntu te recomiendo
Synaptic Package Manager
:Allí puede simplemente buscar los módulos que faltan. busque ctypes e instale todos los paquetes. Luego ve a tu directorio de Python y haz
Esto debería solucionar tu problema.
fuente
Estaba teniendo el mismo problema. Ninguna de las soluciones anteriores funcionó para mí. El desafío clave fue que no tenía acceso de root. Entonces, primero descargo la fuente de libffi. Luego lo compilé con los comandos habituales:
Luego recompillé Python usando
En mi caso, 'home / user123 / Softwares / library / libffi / installation / lib64' es la ruta al directorio de instalación de LIBFFI donde se encuentra libffi.so. Y, / home / user123 / Softwares / Python / installation3 / es la ruta al directorio de instalación de Python. Modifíquelos según su caso.
fuente
Si estás haciendo algo, nadie aquí te escuchará porque "lo estás haciendo de la manera incorrecta", pero tienes que hacerlo "de la manera incorrecta" por razones demasiado estúpidas (por ejemplo, en mi caso, rápidamente se degrada en palabras sobre alguien de la madre con sobrepeso del equipo devops), primero debes:
Obtenga libffi e instálelo en su área de instalación de usuario de la forma habitual.
Luego regrese a su fuente de Python 3 y encuentre esta parte del código en setup.py en el nivel superior del directorio de fuentes de Python
y agregue la línea que he marcado arriba con el comentario. Por qué es necesario y por qué no hay forma de configurar para respetar '--without-system-ffi` en plataformas Linux, tal vez descubra por qué eso no es "compatible" en las próximas horas, pero todo ha trabajado desde entonces. De lo contrario, mucha suerte ... YMMV.
QUÉ HACE: simplemente anula la lógica allí y hace que el comando de enlace del compilador agregue "-lffi", que es todo lo que realmente necesita. Si tiene la biblioteca instalada por el usuario, probablemente esté detectando bien los encabezados siempre que
PKG_CONFIG_PATH
incluyapath/to/your/install/root/lib/pkgconfig
.fuente