Warum funktioniert das Importieren einer benutzerdefinierten abc.py-Datei in Python nicht wie erwartet?Python

Python-Programme
Guest
 Warum funktioniert das Importieren einer benutzerdefinierten abc.py-Datei in Python nicht wie erwartet?

Post by Guest »

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

# abc.py
var = 5

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post