Ich habe die offizielle Dokumentation zu Modulen gelesen. Darin heißt es, dass Python beim Importieren eines Moduls zunächst nach einem integrierten Modul mit diesem Namen sucht. Wenn es nicht gefunden wird, sucht es in einer Liste von Verzeichnissen, die durch die Variable sys.path angegeben wird. Die Verzeichnisse in meinem System sind unten aufgeführt:
Code: Select all
['/home/user/Desktop/Python', '/usr/lib64/python313.zip', '/usr/lib64/python3.13', '/usr/lib64/python3.13/lib-dynload', '/usr/lib64/python3.13/site-packages', '/usr/lib/python3.13/site-packages']
Ich möchte wissen, ob das abc-Modul in Python ein integriertes Modul ist. Um dies zu überprüfen, habe ich den folgenden Codeausschnitt verwendet:
Code: Select all
import sys
print(sys.builtin_module_names)
Ich habe den obigen Code ausgeführt und die folgende Ausgabe erhalten:
Code: Select all
('_abc', '_ast', '_codecs', '_collections', '_functools', '_imp', '_io', '_locale', '_operator', '_signal', '_sre', '_stat', '_string', '_suggestions', '_symtable', '_sysconfig', '_thread', '_tokenize', '_tracemalloc', '_typing', '_warnings', '_weakref', 'atexit', 'builtins', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'posix', 'pwd', 'sys', 'time')
Aus der obigen Ausgabe geht hervor, dass abc kein integriertes Modul ist. Jetzt möchte ich das auf eine andere Art und Weise testen. Ich habe zwei Dateien mit den Namen main.py und abc.py in meinem Python-Verzeichnis erstellt (aber das Standardmodul abc ist in /usr/lib64/python3.13< vorhanden). /code> Verzeichnis). Der Code in diesen Dateien wird unten bereitgestellt:
Code: Select all
# main.py
import abc
print(abc.var)
Da abc kein integriertes Modul ist, sollte mein Interpreter beim Importieren in meinem aktuellen Verzeichnis danach suchen. Und da es in meinem aktuellen Verzeichnis vorhanden ist, habe ich erwartet, dass es 5 ausgibt. Ich habe jedoch die folgende Ausgabe erhalten:
Code: Select all
Traceback (most recent call last):
File "/home/user/Desktop/Python/main.py", line 2, in
print(abc.var)
^^^^^^^
AttributeError: module 'abc' has no attribute 'var'
Ich habe absolut keine Ahnung, warum dies einen Fehler ausgibt.