Ich benutze Ubuntu und habe Python 2.7.5 und 3.4.0 installiert. In Python 2.7.5 kann ich eine Variable erfolgreich zuweisen x = Value('i', 2)
, aber nicht in 3.4.0. Ich bekomme:
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'
Ich habe gerade durch die Installation der Quelle von 3.4.0 auf 3.3.2 aktualisiert. Es wurde in /usr/local/lib/python3.4 installiert .
Habe ich korrekt auf Python 3.4 aktualisiert?
Eines ist mir aufgefallen, dass Python 3.4 in usr / local / lib installiert ist, während Python 3.3.2 noch in usr / lib installiert ist , sodass es nicht überschrieben wurde.
_ctypes
wurde nicht erstellt, da dielibffi-dev
Abhängigkeit nicht verfügbar war. Verwenden Sie stattdessen die Deadsnakes PPA .Antworten:
Das Installieren
libffi-dev
und erneute Installieren von python3.7 hat das Problem für mich behoben.py 3.7 sauber zu bauen
libffi-dev
ist erforderlich, sonst scheitern spätere SachenBei Verwendung von RHEL / Fedora:
oder
Bei Verwendung von Debian / Ubuntu:
quelle
libffi-dev
aber ichldconfig
, um das neue zu ladenlibffi.so
. Der Hauptzweck vonapt-get install libffi-dev
ist die Installation einer Datei namens,libffi.so
die Sie vondpkg -L libffi-dev
@tushar_ecmcpyenv install
), die Distribution nach der Installation des Pakets neu kompilieren müssen.Klonen Sie auf einem neuen Debian-Image https://github.com/python/cpython und führen Sie Folgendes aus:
Führen Sie nun die
configure
oben geklonte Datei aus:Habe 3.7 installiert und arbeite für mich.
LEICHTES UPDATE
Sieht so aus, als hätte ich gesagt, ich würde diese Antwort mit weiteren Erklärungen aktualisieren, und zwei Jahre später habe ich nicht viel hinzuzufügen.
python-dev
notwendig sein könnten.altinstall
Gegensatz zuminstall
Argument verwendet werden kann .Abgesehen davon denke ich, dass die Wahl darin besteht, entweder die gesuchte cpython-Codebasis durchzulesen
#include
, die erfüllt werden müssen. Normalerweise versuche ich jedoch weiterhin, das Paket zu installieren, und lese einfach die Ausgabe durch, in der die erforderlichen Pakete installiert werden, bis sie ausgeführt werden gelingt es.Erinnert mich an die Geschichte des Ingenieurs, des Managers und des Programmierers, dessen Auto einen Hügel hinunter rollt .
quelle
python3-dev
statt seinpython-dev
.python-dev
scheint fürpython2
.sudo apt-get
? Das macht einfach keinen Sinn.sudo apt-get
kümmert sich um das Herunterladen von bereits kompiliertem Code. Warum laden Sie den Code herunter und verwenden ihn dann nicht?sudo
Anweisungen die Voraussetzungen installieren, um den heruntergeladenen Quellcode zu erstellen. Das./configure
undmake
Zeug erfordert die Installation dieser Dinge.Wenn Sie pyenv verwenden und die Fehlermeldung "Kein Modul mit dem Namen '_ctypes'" (wie ich) unter Debian / Raspbian / Ubuntu erhalten, müssen Sie die folgenden Befehle ausführen:
Fügen Sie Ihre Version von Python anstelle von 3.7.6 ein
quelle
pyenv
, um die Dinge tatsächlich zum Laufen zu bringen. Die Verwendung von pyenv ist viel einfacher, als den Quellcode abzurufen und allesmake
sicher zu erledigen .Detaillierte Schritte zur Installation von Python 3.7 unter CentOS oder einem beliebigen Redhat-Linux-Computer:
quelle
Ich dachte, ich würde die Centos-Installationen hinzufügen:
Überprüfen Sie die Python-Version:
python3 -V
Erstellen Sie virtualenv:
virtualenv -p python3 venv
quelle
Ich habe diesen Fehler festgestellt, als ich versucht habe, Python 3.7.3 in Ubuntu 18.04 mit dem nächsten Befehl zu installieren :
$ pyenv install 3.7.3
. Die Installation war nach dem Ausführen erfolgreich$ sudo apt-get update && sudo apt-get install libffi-dev
(wie hier vorgeschlagen ). Das Problem wurde gelöst dort .quelle
Keine der Lösungen funktionierte. Sie müssen Ihre Python erneut kompilieren. Sobald alle erforderlichen Pakete vollständig installiert waren.
Folge dies:
./configure --enable-optimizations
https://gist.github.com/jerblack/798718c1910ccdd4ede92481229043be
quelle
In diesem Thread finden Sie für die benutzerdefinierte Installation von libffi. Für Python3.7 ist es schwierig, den Bibliotheksverzeichnis von libffi zu finden. Eine alternative Methode besteht beispielsweise darin, die
CONFIGURE_LDFLAGS
Variable im Makefile festzulegenCONFIGURE_LDFLAGS="-L/path/to/libffi-3.2.1/lib64"
.quelle
Meine Lösung: Die Installation von libffi-dev mit apt-get hat nicht geholfen. Aber das hat geholfen: libffi von der Quelle installieren und dann Python 3.8 von der Quelle installieren.
Meine Konfiguration: Ubuntu 16.04 LTS Python 3.8.2
Schritt für Schritt:
Beim Starten des Debuggers über Visual Studio Code und beim Ausführen wurde die Fehlermeldung "ModuleNotFoundError: Kein Modul mit dem Namen '_ctypes'" angezeigt
python3 -c "import sklearn; sklearn.show_versions()"
.sudo apt-get install libtool
In der Datei README.md von libffi wird erwähnt, dass auch Autoconf und Automake erforderlich sind. Sie wurden bereits auf meinem System installiert../configure --disable-docs
make check
sudo make install
./configure
make
make test
make install
Danach konnte meine Python-Installation _ctypes finden.
quelle
Dies löste den gleichen Fehler für mich auf Debian :
und erneut kompilieren
Referenz: issue31652
quelle
Wenn es Ihnen nichts ausmacht, Miniconda zu verwenden , werden standardmäßig die erforderlichen externen Bibliotheken und _ctypes installiert. Es nimmt mehr Platz in Anspruch und erfordert möglicherweise die Verwendung einer mäßig älteren Version von Python (z. B. 3.7.6 anstelle von 3.8.2 zum Zeitpunkt dieses Schreibens).
quelle
Sie müssen die fehlenden PHP3-Module (Python3) aus dem Paketmanager laden. Wenn Sie Ubuntu haben, empfehle ich Folgendes
Synaptic Package Manager
:Dort können Sie einfach nach den fehlenden Modulen suchen. Suchen Sie nach ctypes und installieren Sie alle Pakete. Gehen Sie dann zu Ihrem Python-Verzeichnis und tun Sie es
Dies sollte Ihr Problem lösen.
quelle
Wenn Sie etwas tun, wird Ihnen hier niemand zuhören, weil "Sie es falsch machen", aber Sie müssen es aus zu dummen Gründen "falsch machen" (in meinem Fall wird es schnell zu einem Foul Worte über jemanden im Devops-Team (übergewichtige Mutter), müssen Sie zuerst:
Holen Sie sich libffi und installieren Sie es wie gewohnt in Ihrem Benutzerinstallationsbereich.
Kehren Sie dann zu Ihrer Python 3-Quelle zurück und suchen Sie diesen Teil des Codes in setup.py auf der obersten Ebene des Python-Quellverzeichnisses
und füge die Zeile hinzu, die ich oben mit dem Kommentar markiert habe. Warum es notwendig ist und warum es keine Möglichkeit gibt, die Konfiguration so zu gestalten, dass '--without-system-ffi` auf Linux-Plattformen respektiert wird, werde ich vielleicht in den nächsten Stunden herausfinden, warum dies "nicht unterstützt" wird, aber alles hat seitdem gearbeitet. Ansonsten viel Glück ... YMMV.
WAS ES TUT: Überschreibt einfach die Logik dort und veranlasst den Compiler-Verknüpfungsbefehl, "-lffi" hinzuzufügen, was alles ist, was es wirklich braucht. Wenn Sie die Bibliothek vom Benutzer installiert haben, werden die Header wahrscheinlich gut erkannt, solange Sie sie
PKG_CONFIG_PATH
enthaltenpath/to/your/install/root/lib/pkgconfig
.quelle