Website-Suche

Wie man Python `Kein solches Datei- oder Verzeichnisfehler` beim Installieren von Paketen behebt


Einführung

Ein häufiger Fehler, den Sie beim Installieren von Python-Modulen erhalten können, ist der Keine solche Datei oder Verzeichnis Fehler. Dies kann irreführend sein, da normalerweise keine Datei oder kein Verzeichnis in dem Paket fehlt, das Sie installieren möchten. Stattdessen resultiert dieser Fehler daraus, dass Python während der Modulinstallation versucht, Ihren Systemcompiler aufzurufen. Dies liegt daran, dass die Pfade zu Ihrem Systemcompiler oft fest in Python selbst codiert sind, und es findet die benötigten Compiler-Dateien nicht. Dieses Tutorial bietet ein Beispiel für diesen Fehler und die Schritte, um ihn auf mehreren Plattformen zu beheben.

Fehlende Compilerfehler

Python-Pakete werden typischerweise mit dem pip-Paketmanager über den Befehl pip install installiert. pip wird eine Liste von Abhängigkeiten drucken, die zusätzlich von dem von Ihnen ausgewählten Paket benötigt werden, sowie eine lange Liste von Ausgaben aus dem Installationsprozess. Manchmal wird der Installer mit einem Fehler abbrechen, der einen Text wie den folgenden gegen Ende der Ausgabe enthält:

      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.10 -I/usr/local/lib/python3.10/dist-packages/numpy/core/include -I/usr/include/python3.10 -c radiomics/src/_cmatrices.c -o build/temp.linux-x86_64-3.10/radiomics/src/_cmatrices.o
      error: command 'x86_64-linux-gnu-gcc' failed: No such file or directory
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> pyradiomics

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

Dieser spezifische Fehler war das Ergebnis des Versuchs, pd-dwi, eine Python-Bibliothek, die in der Chemotherapie-Forschung verwendet wird, mit pip install pd-dwi zu installieren.

Einige Python-Bibliotheken, insbesondere jene, die für wissenschaftliches Rechnen verwendet werden, müssen nach der Installation zusätzlichen Code lokal auf Ihrem Computer kompilieren. Python ist eine hochgradige, interpretierte Sprache, die nur mit dem Python-Interpreter selbst ausgeführt werden kann. Niedrigere Programmiersprachen wie C oder Rust, die von Python-Bibliotheken gelegentlich für leistungsstarke Verarbeitungen verwendet werden, müssen kompiliert und optimiert werden, bevor sie ausführbar sind. Wenn auf Ihrem System kein Compiler vorhanden ist, schlägt die Installation fehl.

Auf den meisten modernen Plattformen, wenn Sie den Paketmanager von Python, pip, installieren, wird auch eine Compiler-Umgebung und die damit verbundenen Pakete eingerichtet. Es gibt jedoch einige Gründe, warum dies nicht immer der Fall sein könnte. Zum Beispiel könnte der Compiler versehentlich deinstalliert worden sein oder wurde von Anfang an nie installiert. Und im Gegensatz zu Linux werden Python-Pakete normalerweise nicht vom System-Paketmanager auf Mac oder Windows installiert, was mehr Gelegenheiten für Probleme schafft.

Die folgenden Schritte dieses Tutorials geben Anweisungen zur Installation und Überprüfung eines Python-kompatiblen Compilers auf Ubuntu/Debian Linux, auf Red Hat/Rocky Linux, auf Windows und auf macOS.

Compiler-Pakete für Ubuntu und Debian

Unter Ubuntu können Sie ein Paket namens build-essential installieren, das alle Pakete bereitstellt, die für eine moderne, gut unterstützte Compiler-Umgebung benötigt werden. build-essential ist das, was als Meta-Paket bekannt ist. Es bezieht sich nicht auf ein einzelnes Paket, sondern zieht eine Reihe von gängigen Compiler-Tools als Abhängigkeiten heran.

Sie können auch libpython3-dev installieren. Dies ist ein langjähriges Paket im Ubuntu/Debian-Ökosystem, das im Wesentlichen den Compiler mit Python verbindet und alle notwendigen Backend-Konfigurationen bereitstellt, um Ihren Compiler automatisch von Python oder von pip aus aufzurufen. In der Regel wird es automatisch zusammen mit pip installiert, aber wenn Sie pip ohne Verwendung des Paketmanagers installieren, könnten Sie es verpassen.

Installieren Sie die Pakete mit apt:

  1. sudo apt install build-essential libpython3-dev

Dies wird auch eine Reihe von Abhängigkeiten installieren. Danach können Sie überprüfen, ob ein Compiler verfügbar ist, indem Sie nach dem Vorhandensein des make-Befehls auf Ihrem System suchen. Dazu verwenden Sie den which-Befehl:

  1. which make
/usr/bin/make

`make` ist der Befehl, den `gcc`, den beliebtesten Open-Source-Compiler, verwendet, um eine `Makefile` zu analysieren, welche die Compile-Anweisungen innerhalb jedes Pakets bereitstellt. Wenn Sie jetzt eine Version von `make` in Ihrem Pfad installiert haben, versuchen Sie erneut, Ihr Python-Modul mit `pip` zu installieren.

Compiler-Pakete für Red Hat und Rocky Linux

Unter Red Hat und Rocky Linux können Sie die groups-Funktionalität des dnf Paketmanagers verwenden, um eine Gruppe von Paketen zu installieren, die eine gut unterstützte Compiler-Umgebung umfasst. Die Gruppe von Paketen, die Sie installieren werden, heißt "Entwicklungstools".

Verwende zwei dnf Befehle, um die Paketgruppe zu installieren:

  1. sudo dnf groups mark install "Development Tools"
  2. sudo dnf groupinstall "Development Tools"

Dies wird auch eine Reihe von Abhängigkeiten installieren. Als nächstes können Sie python3-devel installieren, ein langjähriges Paket des Red Hat-Ökosystems, das im Grunde genommen den Compiler mit Python „verdrahtet“. python3-devel bietet alle notwendigen Backend-Konfigurationen, um Ihren Compiler automatisch aus Python oder von pip aus aufzurufen:

  1. sudo dnf install python3-devel

Anschließend können Sie überprüfen, ob ein Compiler verfügbar ist, indem Sie nach der Existenz des make-Befehls auf Ihrem System suchen. Dazu verwenden Sie den which-Befehl:

  1. which make
/usr/bin/make

`make` ist der Befehl, den `gcc`, den beliebtesten Open-Source-Compiler, verwendet, um eine `Makefile` zu analysieren, welche die Compile-Anweisungen innerhalb jedes Pakets bereitstellt. Wenn Sie jetzt eine Version von `make` in Ihrem Pfad installiert haben, versuchen Sie erneut, Ihr Python-Modul mit `pip` zu installieren.

Windows-Compilerumgebungen

Windows-Compiler-Probleme können kniffliger sein, da es viele verschiedene Möglichkeiten gibt, Python zu installieren, und jede von ihnen erwartet unterschiedliche Compiler:

  • Wenn Sie Python mit WSL2 verwenden, ist es wie das Ausführen von Python unter Linux, sodass Sie die Fehlerbehebungsanweisungen für Ihre Distribution (standardmäßig Ubuntu) befolgen können.

  • Wenn Sie Python mit Anaconda verwenden, stellt es seine eigenen Compiler-Pakete innerhalb der conda-Umgebung zur Verfügung, wodurch normalerweise diese Fehler im Voraus vermieden werden.

  • Wenn Sie Python nativ unter Windows verwenden, gibt es einige weitere Überlegungen. Standardmäßig versucht Python unter Windows, die Microsoft Visual Studio Build Tools zu verwenden. Dies ist eine sehr große Installation und fügt viele Pakete des Windows-Ökosystems hinzu, die Ihnen möglicherweise unbekannt sind, wenn Sie hauptsächlich in der Cloud arbeiten, sollte jedoch nach der Installation automatisch funktionieren, ähnlich wie die Installation von make unter Linux.

  • Wenn Sie bereits eine funktionierende Version des Open-Source-Compilers gcc und des make Build-Tools in Ihrer Windows-Umgebung mit MinGW oder Chocolatey installiert haben, können Sie Python anweisen, diesen Compiler unter Windows stattdessen zu verwenden, indem Sie eine Datei unter Lib/distutils/distutils.cfg relativ zu Ihrem Python-Installationspfad erstellen und die folgenden Inhalte hinzufügen:

[build]
compiler=mingw32

[build_ext]
compiler=mingw32

Wenn Sie Schwierigkeiten haben, einen Compiler unter Windows zu installieren, können Sie stattdessen versuchen, ein vorcompiliertes Wheel-Paket für die Bibliothek, die Sie installieren möchten, zu installieren, obwohl dies weniger bequem ist als die Installation über pip, und diese in der Regel nur nach Bedarf verfügbar sind.

macOS Compiler-Umgebungen

macOS bündelt seine Compiler-Toolchain in Apples Entwicklungsumgebung XCode. Ähnlich wie Visual Studio unter Windows ist XCode eine vollständige Entwicklungsumgebung mit einer eigenen Benutzeroberfläche, aber Sie müssen XCode selbst nicht verwenden, um Python-Pakete zu kompilieren. Stattdessen müssen Sie lediglich sicherstellen, dass die XCode-Pakete selbst installiert sind. Sie können dies tun, indem Sie xcode-select –install ausführen:

  1. xcode-select --install

Sie werden aufgefordert, die Installation zu starten, und dann erneut aufgefordert, eine Softwarelizenz zu akzeptieren. Danach werden die Werkzeuge automatisch heruntergeladen und installiert.

Schlussfolgerung

Das Python-Ökosystem ist sehr leistungsfähig und heißt sowohl Anfänger als auch erfahrene Entwickler willkommen, aber das Treffen auf Lücken in den Werkzeugen kann verwirrend sein. In diesem Tutorial haben Sie gelernt, wie Sie Fehler beheben, die aufgrund fehlender Compiler-Pakete auftreten können, und wann Python während der Installation von Modulen niedrigstufigen Code kompilieren muss.

Als Nächstes möchten Sie möglicherweise unsere Serie "Wie man in Python programmiert" durchsehen.