Python-Imports erklärt: Grundlagen, fortgeschrittene Tipps und Fehlerbehebungen

目次

1. Einführung

Wenn Sie mit dem Lernen von Python beginnen, werden Sie fast sicher auf import-Anweisungen stoßen.

In Python können Sie effizient Programme erstellen, indem Sie die Standardbibliothek, externe Bibliotheken und sogar Ihre eigenen Module nutzen. Dies wird durch den import-Mechanismus ermöglicht.

In diesem Artikel erklären wir klar alles von der grundlegenden Verwendung von „import python“ bis zu fortgeschrittenen Techniken, häufigen Fehlern und ihren Lösungen, auf eine Weise, die Anfänger verstehen können.

2. Grundlegende Konzepte von import in Python

2.1 Was ist import?

In Python ist import ein Mechanismuszum Einbinden externer Module in ein Programm. Python stellt viele nützliche Standardbibliotheken zur Verfügung, und durchdie Verwendung von import-Anweisungen, um sie aufzurufen, können Sie Programme effizient entwickeln.

Zum Beispiel, wenn Sie das math-Modul für mathematische Berechnungen verwenden möchten, schreiben Sie wie folgt.

import math
print(math.sqrt(16))  # 4.0

In dem obigen Beispiel wird das math-Modulimportiert, und seine sqrt-Funktion (die die Quadratwurzel berechnet) wird verwendet.

2.2 Vorteile der Verwendung von import

Durch die Nutzung von Pythons import erzielen Sie die folgenden Vorteile.

  1. Verbesserte Code-Wiederverwendbarkeit
  • Durch die Verwendung bestehender Bibliotheken müssen Sie keinen Code von Grund auf neu schreiben.
  1. Erhöhte Entwicklungseffizienz
  • Zum Beispiel macht die Verwendung des random-Moduls das Generieren von Zufallszahlen einfach.
  • Beispiel:
    import random print(random.randint(1, 100)) # gibt eine zufällige Ganzzahl von 1 bis 100 aus
  1. Einfache Erweiterbarkeit
  • Durch die Integration externer Bibliotheken (wie NumPy oder Pandas) wird fortschrittliche Verarbeitung möglich.
侍エンジニア塾

3. Grundlegende Verwendung von Python import

3.1 Importieren von Standardbibliotheken

Python umfasst viele Standardbibliotheken, die direkt verfügbar sind.
Zum Beispiel gehören math und datetime zur Standardbibliothek und können ohne zusätzliche Installation importiert werden.Beispiel: Verwendung des math-Moduls

import math
print(math.pi)  # 3.141592653589793
print(math.factorial(5))  # 5! = 120

Beispiel: Verwendung des datetime-Moduls

import datetime
now = datetime.datetime.now()
print(now)  # aktuelles Datum und Uhrzeit ausgeben

3.2 Verwendung von from … import …

Es ist auch möglich, nur spezifische Funktionen zu importieren.Beispiel: Importieren nur der sqrt-Funktion

from math import sqrt
print(sqrt(25))  # 5.0

Mit diesem Ansatz können Sie sqrt() direkt verwenden statt math.sqrt(), was den Code knapper macht.

3.3 Festlegen eines Aliases für import

Wenn ein Modulname lang ist, können Sie einen Alias festlegen.Beispiel: Importieren von numpy als np

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr)  # [1 2 3 4]

Das verbessert die Lesbarkeit Ihres Codes.

4. Reihenfolge und Mechanismus des Imports

4.1 Modulsuchpfad

Python sucht nach importierten Modulen in der folgenden Reihenfolge.

  1. Aktuelles Verzeichnis
  2. Verzeichnisse, die durch die PYTHONPATH Umgebungsvariable angegeben sind
  3. Python-Standardbibliothek
  4. site-packages Verzeichnis (Ort für externe Bibliotheken)

Um den aktuellen Suchpfad zu überprüfen, führen Sie den folgenden Code aus.

import sys
print(sys.path)

Die gedruckte Liste zeigt die Verzeichnisse, in denen Python nach Modulen sucht.

4.2 Hinzufügen von Pfaden mit sys.path.append()

Beim Importieren eines benutzerdefinierten Moduls macht das Hinzufügen seines Standorts zum Suchpfad es importierbar.

import sys
sys.path.append('/path/to/custom/module')
import my_module  # benutzerdefiniertes Modul importieren

4.3 Rolle von __init__.py

In Python wird ein Verzeichnis, das eine __init__.py enthält, als Paket erkannt.
Dies ermöglicht den Import von Untermodulen.

年収訴求

5. Zusammenfassung

  • Mithilfe von Import-Anweisungen können Sie die Standardbibliothek von Python und externe Bibliotheken nutzen.
  • Sie können Standardmodule importieren, wie z. B. import math.
  • Mithilfe von from module import function können Sie nur eine bestimmte Funktion importieren.
  • Aliase (z. B. import numpy as np) ermöglichen es Ihnen, lange Modulnamen zu kürzen.
  • Das Verständnis des Suchpfads ist entscheidend, um Importfehler zu vermeiden.

Im nächsten Artikel besprechen wir fortgeschrittene Import-Techniken in Python (relative Imports, dynamische Imports usw.).
Nutzen Sie dieses Wissen, um mit dem Schreiben praktischerer Python-Programme zu beginnen! 🚀

6. Erweiterte Import-Techniken

Die Python-import-Anweisung kann nicht nur in ihrer grundlegenden Form, sondern auch mit erweiterten Techniken je nach Situation verwendet werden. Hier besprechen wir im Detail dierelativen Imports, dynamischen Imports und die Risiken von Wildcard-Imports.

6.1. Relative Imports und absolute Imports

In Python gibt es zwei Möglichkeiten, Module zu importieren:„absolute import“und„relative import“.

6.1.1. Absolute import

Absolute importbezieht sich auf das Importieren eines Moduls durch Angabe eines Pfads vom Root-Verzeichnis (der obersten Ebene des Projekts).

# Beispiel-Projektstruktur
my_project/
│── main.py
│── utils/
│   ├── helper.py
│   └── math_utils.py

Um math_utils.py aus main.py zu importieren, würden Sie einen absoluten Import wie folgt verwenden.

# main.py
import utils.math_utils  # absoluter Import

6.1.2. Relative import

Relative importbedeutet das Importieren eines Moduls durch Angabe seines Standorts relativ zum aktuellen Verzeichnis oder einem übergeordneten Verzeichnis.

Zum Beispiel, um math_utils.py aus helper.py zu importieren, können Sie schreiben:

# helper.py
from . import math_utils  # Modul aus demselben Verzeichnis importieren
from .. import another_module  # Modul aus dem übergeordneten Verzeichnis importieren

6.2. Dynamische Imports mit importlib

Normalerweise wertet Python Import-Anweisungeneinmal beim Programmstart aus. Es gibt jedoch Fälle, in denen Siezur Laufzeit bestimmen möchten, welches Modul importiert werden soll. In solchen Fällen ist das importlib-Modul hilfreich.

6.2.1. So verwenden Sie importlib.import_module()

Zum Beispiel, wenn Sie numpy nur importieren möchten, wenn es installiert ist, können Sie es dynamisch mit importlib.import_module() importieren.

import importlib

module_name = "math"
math_module = importlib.import_module(module_name)

print(math_module.sqrt(25))  # 5.0

6.3. Risiken von import * (Wildcard-Import)

In Python importiert das Schreiben von from module import * alle Funktionen und Variablen aus dem Modul.

from math import *
print(sqrt(16))  # 4.0

6.3.1. Warum Sie Wildcard-Imports vermeiden sollten

Es ist schwer zu erkennen, welche Variablen oder Funktionen importiert wurdenNamekollisionen sind wahrscheinlicher(wenn verschiedene Module Funktionen mit demselben Namen haben)
Die Leistung kann abnehmen(unnötige Variablen können importiert werden)Alternativen

  • Importieren Sie nur die Funktionen, die Sie explizit benötigen
  from math import sqrt, pi
  • Verwenden Sie einen Alias, um es klar zu machen
  import numpy as np

7. Ursachen und Lösungen für Import-bezogene Fehler

Beim Verwenden von import in Python stoßen Anfänger oft auf mehrere Fehler. Dieser Abschnitt gibt eine detaillierte Erklärung derTypen und Ursachen von Import-Fehlern sowie der entsprechenden Lösungen.

7.1. ModuleNotFoundError: No module named 'xxx'

Fehlermeldung

ModuleNotFoundError: No module named 'numpy'

Ursache

  • numpy und andere externe Bibliotheken sind nicht installiert
  • Der Modulpfad ist nicht in sys.path enthalten
  • Die Python-Virtualumgebung ist unterschiedlich

LösungenDie erforderlichen Module installieren

pip install numpy

Die im aktuellen Environment installierten Pakete überprüfen

pip list

Die Virtualumgebung aktivieren (für venv)

source venv/bin/activate  # Mac/Linux
venvScriptsctivate  # Windows

Den Modulpfad überprüfen

import sys
print(sys.path)

Falls das gewünschte Modul nicht gefunden werden kann, können Sie es mit sys.path.append('path') hinzufügen.

7.2. ImportError: cannot import name 'xxx'

Fehlermeldung

ImportError: cannot import name 'my_function' from 'my_module'

Ursache

  • my_module.py definiert my_function nicht
  • Syntaxfehler in import (z. B. Versuch, eine Klasse statt einer Funktion zu importieren)
  • Zirkulärer Import(siehe unten)

LösungDas Zielmodul überprüfenÜberprüfen Sie, ob my_function korrekt in my_module.py definiert ist.
Den falschen Import-Statement korrigieren

# Fehler
from my_module import my_function

# Korrektur
import my_module
print(my_module.my_function())

Mögliche zirkuläre Imports überprüfenSiehe den 7.3 Abschnitt unten.

7.3. Circular import (Zirkulärer Import)

Fehlermeldung

ImportError: cannot import name 'A' from partially initialized module 'B'

Ursache

  • module_a.py importiert module_b.py, und module_b.py importiert ebenfalls module_a.py

Beispiel: Code, der einen zirkulären Import verursachtmodule_a.py

from module_b import B
class A:
    pass

module_b.py

from module_a import A
class B:
    pass

Wenn Sie module_a.py in diesem Zustand ausführen, tritt ein Circular-Import-Fehler auf.LösungDen Import in eine Funktion verschieben

# module_a.py
def use_module_b():
    from module_b import B
    b_instance = B()

Die Modulabhängigkeiten neu bewerten

  • So gestalten, dass Abhängigkeiten so weit wie möglich reduziert werden
  • So gestalten, dass ein einzelnes Modul nicht mehrere Verantwortlichkeiten hat

Verzögerte (lazy) Imports verwenden

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from module_b import B

8. Häufig gestellte Fragen (FAQ)

Bezüglich der import-Anweisungen in Python erklären wir die Punkte, über die Anfänger bis Fortgeschrittene oft stolpern, in einemFrage-Antwort-Format.Wir stellen gängige Probleme und ihre Lösungen vor, unter Einbeziehung realer Fehlermeldungen und konkreter Beispiele.

8.1. Was ist der Unterschied zwischen import und from ... import ...?

A:import und from ... import ... sind beide Wege, Module zu verwenden, aber sie verhalten sich unterschiedlich.

1. Beim Verwenden von import

import math
print(math.sqrt(16))  # 4.0
  • Wenn Sie import math ausführen, wird das gesamte math-Modul importiert.
  • Sie müssen den Modulnamen angeben, um Funktionen aufzurufen(z. B. math.sqrt(16)).

2. Beim Verwenden von from ... import ...

from math import sqrt
print(sqrt(16))  # 4.0
  • Wenn Sie from math import sqrt ausführen, wird nur die sqrt()-Funktion importiert.
  • Da Sie die Funktion direkt ohne Modulnamen aufrufen können, wird der Code knapper.

8.2. Wie handhabt man ModuleNotFoundError: No module named 'xxx'?

Überprüfen Sie, ob das Modul installiert ist

pip install numpy

Überprüfen Sie, ob die virtuelle Umgebung korrekt eingerichtet ist

source venv/bin/activate  # Mac/Linux
venvScriptsactivate  # Windows

8.3. Warum tritt ImportError: cannot import name 'xxx' auf?

Überprüfen Sie, ob die Funktion oder Klasse im Modul existiert

import my_module
print(dir(my_module))  # check objects inside my_module

Führen Sie den Import innerhalb einer Funktion aus, um zirkuläre Imports zu vermeiden

def use_module_b():
    from module_b import some_class

8.4. Ist es in Ordnung, import * zu verwenden?

A:Es sollte im Allgemeinen vermieden werden.

Es ist schwer zu erkennen, welche Funktionen oder Variablen importiert wurdenNamenskonflikte sind wahrscheinlicherUnnötige Objekte können ebenfalls importiert werdenAlternative

from math import sqrt, pi

8.5. Wie lädt man ein importiertes Modul neu?

Verwenden Sie importlib.reload()

import importlib
import my_module

importlib.reload(my_module)

9. Schlussfolgerung (Was als Nächstes lernen)

Durch das Verständnis der Python-import-Anweisung haben Sie gelernt, wie man Module und Bibliotheken effektiv verwendet. Dieser Artikel bot eine detaillierte Erklärung, die alles von der grundlegenden Import-Verwendung bis zu fortgeschrittenen Techniken, häufigen Fehlern und ihren Lösungen abdeckt.

Im Python-Programmieren ist das Verständnis, wie import funktioniert, eine wesentliche Fähigkeit, die die Lesbarkeit des Codes und die Entwicklungseffizienz verbessert. Verwenden Sie das hier erlangte Wissen, um Ihre Nutzung von Python weiter auszubauen.

9.1. Was als Nächstes lernen

Sobald Sie die Grundlagen von import beherrschen, werden die folgenden Themen für Ihr nächstes Studium empfohlen.

1. Python Package Management (pip & venv)

In Python ist das Verwalten externer Bibliotheken äußerst wichtig. Um das Beste aus import herauszuholen, sollten Sie lernen, wie man Bibliotheken mit pip installiert und virtuelle Umgebungen (venv) einrichtet.

pip install requests  # Bibliothek installieren
python -m venv myenv  # Virtuelle Umgebung erstellen
source myenv/bin/activate  # Virtuelle Umgebung aktivieren (Mac/Linux)
myenvScriptsactivate  # Virtuelle Umgebung aktivieren (Windows)

2. Python Object-Oriented Programming (Classes and Methods)

Nachdem Sie Module mit import aufteilen können, ist der nächste empfohlene Schritt, die objektorientierte Programmierung (OOP) in Python zu lernen.

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return "..." 

class Dog(Animal):
    def speak(self):
        return "Woof"

my_dog = Dog("Pochi")
print(my_dog.speak())  # Woof

3. Python Parallel Processing and Multithreading

Wenn Sie anspruchsvollere Python-Programmierung angehen möchten, ist es vorteilhaft, parallele Verarbeitung und Multithreading zu lernen.

import threading

def print_numbers():
    for i in range(5):
        print(i)

thread = threading.Thread(target=print_numbers)
thread.start()
thread.join()

9.2. Zusammenfassung

  • Durch die Nutzung von Pythons import können Sie Standard- und externe Bibliotheken effektiv verwenden.
  • Das Verständnis, wie import funktioniert, erleichtert die Modularisierung und Wiederverwendung von Code.
  • Als nächster Schritt werden das Lernen von Paketverwaltung, objektorientierter Programmierung und paralleler Verarbeitung Ihre Fähigkeiten verbessern.
  • Es ist wichtig, Ihr Lernen praktisch voranzutreiben, während Sie offizielle Dokumentation und Lernressourcen nutzen.

Das schließt den umfassenden Leitfaden zu „import python“ ab! 🎉
Verwenden Sie dieses Wissen, um anspruchsvollere Python-Programmierung anzugehen! 🚀

侍エンジニア塾