J'utilise Ubuntu et j'ai installé Python 2.7.5 et 3.4.0. En Python 2.7.5, je suis capable d'attribuer avec succès une variable x = Value('i', 2)
, mais pas en 3.4.0. Je reçois:
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'
Je viens de mettre à jour la version 3.3.2 en installant la source de 3.4.0. Il s'est installé dans /usr/local/lib/python3.4 .
Ai-je mis à jour correctement vers Python 3.4?
J'ai remarqué une chose que Python 3.4 est installé dans usr / local / lib , tandis que Python 3.3.2 est toujours installé dans usr / lib , donc il n'a pas été écrasé.
_ctypes
n'a pas été créé car lalibffi-dev
dépendance n'était pas disponible. Pensez à utiliser le PPA Deadsnakes à la place.Réponses:
L'installation
libffi-dev
et la réinstallation de python3.7 ont résolu le problème pour moi.pour construire proprement py 3.7
libffi-dev
est nécessaire, sinon les choses plus tard échouerontSi vous utilisez RHEL / Fedora:
ou
Si vous utilisez Debian / Ubuntu:
la source
libffi-dev
maisldconfig
pour charger le nouveaulibffi.so
. Le but principal deapt-get install libffi-dev
est d'installer un fichier appelélibffi.so
que vous pouvez vérifier pardpkg -L libffi-dev
@tushar_ecmcpyenv install
), vous devrez recompiler la distribution après avoir installé le paquet.Sur une nouvelle image Debian, cloner https://github.com/python/cpython et exécuter:
Exécutez maintenant le
configure
fichier cloné ci-dessus:J'ai installé 3.7 et fonctionne pour moi.
MISE À JOUR LÉGÈRE
On dirait que j'ai dit que je mettrais à jour cette réponse avec quelques explications supplémentaires et deux ans plus tard, je n'ai pas grand chose à ajouter.
python-dev
peuvent être nécessaires.altinstall
par opposition àinstall
dans la commande make .En dehors de cela, je suppose que le choix serait soit de lire la base de code cpython à la recherche de
#include
directives à respecter, mais ce que je fais habituellement est de continuer à essayer d'installer le package et de continuer à lire la sortie en installant les packages requis jusqu'à ce qu'il réussit.Cela me rappelle l'histoire de l' ingénieur, du directeur et du programmeur dont la voiture roule sur une colline .
la source
python3-dev
au lieu depython-dev
.python-dev
semble pourpython2
.sudo apt-get
? Cela n'a tout simplement aucun sens.sudo apt-get
gère le téléchargement du code déjà compilé, alors pourquoi téléchargez-vous le code et ne l'utilisez pas?sudo
déclarations installaient des pré-requis afin d'aller construire le code source que vous avez téléchargé. le./configure
et lesmake
trucs nécessitent que ces éléments soient installés.Si vous utilisez pyenv et obtenez l'erreur "Aucun module nommé '_ctypes'" (comme je le suis) sur Debian / Raspbian / Ubuntu, vous devez exécuter ces commandes:
Mettez votre version de python au lieu de 3.7.6
la source
pyenv
afin de faire fonctionner les choses. Utiliser pyenv est bien plus facile que de saisir le code source et de faire tout lemake
nécessaire à coup sûr.Étapes détaillées pour installer Python 3.7 dans CentOS ou toute machine Linux Redhat:
la source
Je pensais que j'ajouterais les installations Centos:
Vérifiez la version de python:
python3 -V
Créez virtualenv:
virtualenv -p python3 venv
la source
Je lance cette erreur quand j'ai essayé d'installer Python 3.7.3 dans Ubuntu 18.04 avec la commande suivante:
$ pyenv install 3.7.3
. L'installation a réussi après l'exécution$ sudo apt-get update && sudo apt-get install libffi-dev
(comme suggéré ici ). Le problème a été résolu là-bas .la source
Aucune des solutions n'a fonctionné. Vous devez recompiler votre python à nouveau; une fois que tous les packages requis ont été complètement installés.
Suivez ceci:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
la source
Reportez-vous à ce fil ou à ce fil , pour une installation personnalisée de libffi, il est difficile pour Python3.7 de trouver l'emplacement de la bibliothèque de libffi. Une autre méthode consiste à définir la
CONFIGURE_LDFLAGS
variable dans le Makefile, par exempleCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.la source
Ma solution: installer libffi-dev avec apt-get n'a pas aidé. Mais cela a aidé: installer libffi à partir des sources, puis installer Python 3.8 à partir des sources.
Ma configuration: Ubuntu 16.04 LTS Python 3.8.2
Pas à pas:
J'ai reçu le message d'erreur "ModuleNotFoundError: aucun module nommé '_ctypes'" lors du démarrage du débogueur à partir de Visual Studio Code et lors de l'exécution
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
Le fichier README.md de libffi mentionne qu'autoconf et automake sont également nécessaires. Ils étaient déjà installés sur mon système../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
Après cela, mon installation python pourrait trouver _ctypes.
la source
Cela a résolu la même erreur pour moi sur Debian :
et compilez à nouveau
Référence: issue31652
la source
Si cela ne vous dérange pas d'utiliser Miniconda , les bibliothèques externes et _ctypes nécessaires sont installés par défaut. Cela prend plus de place et peut nécessiter l'utilisation d'une version modérément plus ancienne de Python (par exemple 3.7.6 au lieu de 3.8.2 à ce jour).
la source
Vous devez charger les modules php3 (Python3) manquants depuis le gestionnaire de paquets. Si vous avez Ubuntu, je recommande le
Synaptic Package Manager
:Là, vous pouvez simplement rechercher les modules manquants. recherchez des ctypes et installez tous les packages. Ensuite, allez dans votre répertoire Python et faites
Cela devrait résoudre votre problème.
la source
J'avais le même problème. Aucune des solutions ci-dessus n'a fonctionné pour moi. Le principal défi était que je n'avais pas l'accès root. Donc, je télécharge d'abord le source de libffi. Ensuite, je l'ai compilé avec les commandes habituelles:
Ensuite, j'ai recompilé python en utilisant
Dans mon cas, 'home / user123 / Softwares / library / libffi / installation / lib64' est le chemin vers le répertoire d'installation de LIBFFI où se trouve libffi.so. Et, / home / user123 / Softwares / Python / installation3 / est le chemin vers le répertoire d'installation de Python. Modifiez-les selon votre cas.
la source
Si vous faites quelque chose, personne ici ne vous écoutera parce que "vous le faites dans le mauvais sens", mais vous devez le faire "dans le mauvais sens" pour des raisons trop insignifiantes (par exemple, dans mon cas, cela se dégrade rapidement en faute mots sur quelqu'un sur une mère en surpoids de l'équipe devops), vous devez d'abord:
Obtenez libffi et installez-le dans votre zone d'installation utilisateur de la manière habituelle.
Revenez ensuite à votre source Python 3 et trouvez cette partie du code dans setup.py au niveau supérieur du répertoire source python
et ajoutez la ligne que j'ai marquée ci-dessus avec le commentaire. Pourquoi c'est nécessaire, et pourquoi il n'y a aucun moyen de faire en sorte que la configuration respecte '--without-system-ffi' sur les plates-formes Linux, peut-être découvrirai-je pourquoi cela n'est "pas pris en charge" dans les prochaines heures, mais tout a travaillé depuis. Sinon, bonne chance ... YMMV.
CE QUE CELA FAIT: remplace simplement la logique là-bas et oblige la commande de liaison du compilateur à ajouter "-lffi" qui est tout ce dont elle a vraiment besoin. Si la bibliothèque est installée par l'utilisateur, elle détecte probablement bien les en-têtes tant que votre
PKG_CONFIG_PATH
inclutpath/to/your/install/root/lib/pkgconfig
.la source