Direkter Import
Zum Beispiel möchte ich make_env.pyenv package
in ma_main importieren. py
/code>-Datei, um die darin enthaltenen Funktionen zu lesenma_main.py
中导入env包
中的make_env.py
文件, 从而读取其中的函数
因为此时ma_main.py
和env包
都在src
这个根目录下, 所以可以直接import继续导入
这里from
再import
是因为make_env.py
中只有一个函数就是make_env()
, 所以直接import该函数, 在调用的时候可以直接写名字
如果是from env import make_env
, 那么调用make_env.py
中的make_env()函数
时, 还要用.
进行声明
PS: from env import make_env
和import env.make_env
是一样的
如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。
例如这种情况: 要在main.py
中导入pwcong
包从而执行__init__.py
的一些方法
然而main.py
在./Torch/main/
下, 而pwcong
在./Torch/
下
即不在同一个目录, 此时main.py
文件python解释器模块搜索的路径列表中不包含是./Torch
所以这时候就要用python中自带的sys包
导入自定义模块的路径, 从而手动添加Python解释器在main.py
中的模块搜索的路径列表 , 之后才能成功导入
在Python中,当你导入一个模块时,解释器会从一个路径列表中查找该模块。
这个路径列表通常包括Python解释器安装的默认路径,以及在环境变量PYTHONPATH
中指定的任何路径。
使用sys.path.append()
函数可以向这个路径列表中添加新的路径,以便解释器能够找到你指定的模块。
添加新路径后,你就可以通过import
语句导入该路径下的模块。
这并不会影响命名空间,而只是告诉解释器在哪里可以找到要导入的模块。
导入自定义模块的步骤如下:
先导入sys模块
然后通过sys.path.append(path)
函数来导入自定义模块所在的目录
导入自定义模块。
即在main.py
的最上面几行写入如下代码手动定义该文件的python解释器路径
import sys sys.path.append(r"C:\Users\PC\Desktop\Torch") # 要加上地址生命符r, 并且要是绝对路径
在__init__.py
中定义一个hello函数, 打印hello
通过sys.path.append添加解释器模块搜索的路径, 然后通过模块名执行函数
一个模块必须要有__init__.py
文件
在Python中,一个目录要被视为一个包,它必须包含一个__init__.py
文件。这个文件可以是一个空文件,或者包含一些包初始化的代码。
没有__init__.py
文件的目录就只是一个目录, 其他py文件无法导入该目录下的任何py文件中的函数
__init__.py
文件可能包含:
声明命名空间:__init__.py
ma_main.py
und env package
beide im Stammverzeichnis von src , damit Sie direkt importieren und mit dem Import fortfahren könnenHierfrom
Re-import
liegt daran, dass es in make_env.py
nur eine Funktion gibt, nämlich make_env()
, sodass Sie diese Funktion direkt importieren und direkt aufrufen können. Schreiben Sie den Namen
from env import make_env
handelt, müssen Sie es beim Aufruf der Funktion make_env()
in make_env.py
auch mit .PS: from env import make_env
ist dasselbe wie import env.make_env
Die ausführbare Datei und das importierte Zielmodul sind nicht im selben Verzeichnis
pwcong
in main.py
importieren ausführen __init__.py
🎜🎜Allerdings befindet sich main.py
unter ./Torch/main/
und pwcong
befindet sich unter ./Torch/
🎜🎜 befindet sich nicht im selben Verzeichnis. Zu diesem Zeitpunkt enthält die Datei main.py
🎜 nicht die Liste der vom Python-Interpretermodul gesuchten Pfade ./Torch
🎜🎜Zu diesem Zeitpunkt müssen Sie also das mit Python gelieferte sys-Paket
verwenden, um 🎜den Pfad zu importieren Benutzerdefiniertes Modul🎜, und fügen Sie dann den Python-Interpreter manuell in main hinzu. Die 🎜Modulsuchpfadliste🎜 in py
kann nach 🎜PYTHONPATH
angegeben sind. 🎜🎜🎜🎜Verwenden Sie die Funktion sys.path.append()
, um dieser Pfadliste 🎜einen neuen Pfad hinzuzufügen🎜, damit der Interpreter das von Ihnen angegebene Modul finden kann. 🎜🎜🎜🎜Nachdem Sie einen neuen Pfad hinzugefügt haben, können Sie das Modul unter dem Pfad über die Anweisung import
importieren. 🎜🎜🎜🎜Dies hat 🎜keine Auswirkungen auf den Namespace 🎜, sondern teilt dem Interpreter lediglich mit, 🎜wo sich das zu importierende Modul befindet. 🎜🎜main.py
, um den Python-Interpreterpfad der Datei manuell zu definieren🎜rrreee🎜In __init__.py
Definieren Sie eine Hallo-Funktion und drucken Sie Hallo🎜🎜🎜🎜durch sys. path.append Fügen Sie den vom Interpretermodul gesuchten Pfad hinzu und führen Sie die Funktion dann über den Modulnamen aus 🎜🎜🎜🎜a Module müssen eine __init__.py
-Datei haben 🎜🎜In Python 🎜damit ein Verzeichnis🎜 als 🎜Paket🎜 betrachtet wird, muss es eine __init__.py enthalten
-Datei. Diese Datei kann eine leere Datei sein oder Paketinitialisierungscode enthalten. 🎜🎜Ein Verzeichnis ohne eine __init__.py
-Datei ist nur ein Verzeichnis. Andere py-Dateien können keine Funktionen in eine py-Datei in diesem Verzeichnis importieren Enthält: 🎜__init__.py
kann Deklarationen von Variablen, Klassen und Funktionen enthalten 🎜🎜🎜🎜🎜Initialisierungscode 🎜 : Die Datei 🎜init🎜.py kann Initialisierungscode enthalten, der ausgeführt wird, wenn das Paket importiert wird. Dies kann verwendet werden, um bestimmte notwendige Vorgänge auszuführen, z. B. das Konfigurieren eines Pakets oder das Sicherstellen, dass die Abhängigkeiten eines Pakets installiert werden. 🎜🎜🎜🎜🎜Submodulimport🎜: Die Datei 🎜init🎜.py kann Code enthalten, der andere Module importiert. Dies kann verwendet werden, um Submodule zum Namensraum eines Pakets hinzuzufügen, damit Benutzer darauf zugreifen können. 🎜In Python ist ein Namespace ein Wörterbuch mit Variablen- und Funktionsnamen, das zum Aufzeichnen des Namens jedes Bezeichners (Bezeichners) und Wertes verwendet wird. Jeder Namespace im Python-Interpreter ist ein Wörterbuchobjekt, auf dessen Variablen und Funktionen über die Schlüssel-Wert-Paare des Wörterbuchs zugegriffen werden kann.
Es gibt drei Namespaces in Python:
Eingebauter Namespace : Enthält das integrierte Python Interpreter-Variablen und -Funktionen. Diese Variablen und Funktionen können direkt im Programm verwendet werden, ohne dass Module importiert werden müssen, z. B. die Funktion print()
, die Funktion len()
usw. print()
函数、len()
函数等。
全局命名空间:在模块定义时创建,包含了在模块文件中定义的变量和函数。可以在模块中的任何地方使用这些变量和函数。
局部命名空间:在函数调用时创建,包含了函数中定义的变量和函数。只能在函数内部使用这些变量和函数。
命名空间的作用是避免不同命名空间之间的变量或函数名冲突,并且可以更好地管理程序中的变量和函数。在Python中,可以通过使用global
和nonlocal
global
und nonlocal
verwendet werden. #🎜🎜#Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Python-Pakete zu importieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!