Heim  >  Artikel  >  Backend-Entwicklung  >  Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

WBOY
WBOYnach vorne
2023-04-18 21:16:034589Durchsuche

Die Ausführungsdatei und das Zielimportmodul befinden sich im selben Verzeichnis

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.pyenv包都在src这个根目录下, 所以可以直接import继续导入

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

这里fromimport是因为make_env.py中只有一个函数就是make_env(), 所以直接import该函数, 在调用的时候可以直接写名字

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

如果是from env import make_env, 那么调用make_env.py中的make_env()函数时, 还要用.进行声明

PS: from env import make_envimport env.make_env是一样的

执行文件和目标导入模块不在同一目录

如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

例如这种情况: 要在main.py中导入pwcong包从而执行__init__.py的一些方法

然而main.py./Torch/main/下, 而pwcong./Torch/

即不在同一个目录, 此时main.py文件python解释器模块搜索的路径列表中不包含是./Torch

所以这时候就要用python中自带的sys包导入自定义模块的路径, 从而手动添加Python解释器在main.py中的模块搜索的路径列表 , 之后才能成功导入

Python解释器搜索模块的路径列表

  • 在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

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

通过sys.path.append添加解释器模块搜索的路径, 然后通过模块名执行函数

Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

一个模块必须要有__init__.py文件

在Python中,一个目录要被视为一个,它必须包含一个__init__.py文件。这个文件可以是一个空文件,或者包含一些包初始化的代码。

没有__init__.py文件的目录就只是一个目录, 其他py文件无法导入该目录下的任何py文件中的函数

__init__.py文件可能包含:

  • 声明命名空间__init__.py

    Denn zu diesem Zeitpunkt befinden sich ma_main.py und env package beide im Stammverzeichnis von src , damit Sie direkt importieren und mit dem Import fortfahren können
  • Welche Möglichkeiten gibt es, Python-Pakete zu importieren?

    HierfromRe-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 NamenWelche Möglichkeiten gibt es, Python-Pakete zu importieren?

    Wenn es sich um 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_envDie ausführbare Datei und das importierte Zielmodul sind nicht im selben Verzeichnis

    Wenn sich die ausführbare Datei und das Modul nicht im selben Verzeichnis befinden, dann ist der Direktimport 🎜Das benutzerdefinierte Modul 🎜 kann nicht gefunden werden. 🎜🎜Welche Möglichkeiten gibt es, Python-Pakete zu importieren?🎜🎜Welche Möglichkeiten gibt es, Python-Pakete zu importieren?🎜🎜In diesem Fall beispielsweise: Sie müssen das Paket 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 🎜

    Python-Interpreter-Suchmodulpfadliste

    🎜🎜 in Wenn Sie in Python 🎜ein Modul importieren🎜, findet der Interpreter das Modul 🎜 aus einer Liste von Pfaden. 🎜🎜🎜🎜Diese Pfadliste enthält normalerweise den 🎜Standardpfad für die Python-Interpreter-Installation🎜 sowie alle Pfade 🎜, die in der 🎜Umgebungsvariablen 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. 🎜🎜

Bedienungsschritte

🎜Die Schritte zum Importieren eines benutzerdefinierten Moduls sind wie folgt: 🎜
    🎜🎜Importieren Sie zuerst das Systemmodul🎜🎜🎜 🎜 und übergeben Sie dann die Funktion sys.path.append(path), um das Verzeichnis zu importieren, in dem sich das 🎜benutzerdefinierte Modul befindet. 🎜🎜🎜🎜🎜Importieren Sie das benutzerdefinierte Modul. 🎜🎜
🎜Das heißt, schreiben Sie den folgenden Code in die oberen paar Zeilen von main.py, um den Python-Interpreterpfad der Datei manuell zu definieren🎜rrreee🎜In __init__.py Definieren Sie eine Hallo-Funktion und drucken Sie Hallo🎜🎜Welche Möglichkeiten gibt es, Python-Pakete zu importieren?🎜🎜durch sys. path.append Fügen Sie den vom Interpretermodul gesuchten Pfad hinzu und führen Sie die Funktion dann über den Modulnamen aus 🎜🎜Welche Möglichkeiten gibt es, Python-Pakete zu importieren?🎜🎜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: 🎜
    🎜🎜🎜 Deklarationsnamespace 🎜: Die Datei __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. 🎜

Namespace

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中,可以通过使用globalnonlocal

#🎜🎜##🎜🎜##🎜🎜#Globaler Namespace #🎜🎜#: Wird bei der Definition des Moduls erstellt und enthält Variablen und Funktionen, die in der Moduldatei definiert sind. Diese Variablen und Funktionen können überall im Modul verwendet werden. #🎜🎜##🎜🎜##🎜🎜##🎜🎜##🎜🎜#Lokaler Namespace #🎜🎜#: Wird beim Aufruf einer Funktion erstellt und enthält in der Funktion definierte Variablen und Funktionen. Diese Variablen und Funktionen können nur innerhalb von Funktionen verwendet werden. #🎜🎜##🎜🎜##🎜🎜##🎜🎜#Die Rolle des Namespace besteht darin, Konflikte zwischen Variablen- oder Funktionsnamen zwischen verschiedenen Namespaces zu vermeiden und Variablen und Funktionen im Programm besser zu verwalten. In Python kann auf Variablen in den globalen und nicht lokalen Namespaces zugegriffen und diese geändert werden, indem die Schlüsselwörter 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen