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ó.

_ctypesno se creó porque lalibffi-devdependencia no estaba disponible. Considere usar el PPA de deadsnakes en su lugar.Respuestas:
La instalación
libffi-devy reinstalación de python3.7 me solucionó el problema.para construir limpiamente py 3.7
libffi-devse requiere o de lo contrario fallarán las cosas posterioresSi usa RHEL / Fedora:
o
Si usa Debian / Ubuntu:
fuente
libffi-devpero sigo recibiendo este errorldconfigpara cargar el nuevolibffi.so. El propósito principal deapt-get install libffi-deves instalar un archivo llamadolibffi.soque 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
configurearchivo 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-devpodrían ser necesarias.altinstalllugar deinstallen el comando make .Aparte de eso, supongo que la opción sería leer el código base de cpython en busca de
#includedirectivas 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-devlugar depython-dev.python-devparece parapython2.sudo apt-get? Eso simplemente no tiene ningún sentido.sudo apt-getmaneja la descarga de código ya compilado, entonces, ¿por qué descarga el código y luego no lo usa?sudodeclaraciones son requisitos previos de instalación para poder construir el código fuente que descargaste. the./configureandmakestuff 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
pyenvde para que las cosas realmente funcionen. Usar pyenv es mucho más fácil que tomar el código fuente y hacer todas lasmakecosas 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 -VCrea virtualenv:
virtualenv -p python3 venvfuente
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-optimizationshttps://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_LDFLAGSvariable 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 libtoolEl archivo README.md de libffi menciona que autoconf y automake también son necesarios. Ya estaban instalados en mi sistema../configure --disable-docsmake checksudo make install./configuremakemake testmake installDespué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_PATHincluyapath/to/your/install/root/lib/pkgconfig.fuente