Maison  >  Article  >  développement back-end  >  Quelles sont les manières d’importer des packages Python ?

Quelles sont les manières d’importer des packages Python ?

WBOY
WBOYavant
2023-04-18 21:16:034524parcourir

Le fichier d'exécution et le module d'importation cible sont dans le même répertoire

Import direct

Par exemple, je souhaite importer make_env.pypackage env dans ma_main. py /code> pour lire les fonctions qu'il contientma_main.py中导入env包中的make_env.py文件, 从而读取其中的函数

因为此时ma_main.pyenv包都在src这个根目录下, 所以可以直接import继续导入

Quelles sont les manières d’importer des packages Python ?

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

Quelles sont les manières d’importer des packages Python ?

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

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

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

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

Quelles sont les manières d’importer des packages Python ?

Quelles sont les manières d’importer des packages Python ?

例如这种情况: 要在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

Quelles sont les manières d’importer des packages Python ?

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

Quelles sont les manières d’importer des packages Python ?

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

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

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

__init__.py文件可能包含:

  • 声明命名空间__init__.py

    Parce qu'à l'heure actuelle, ma_main.py et env package se trouvent tous deux dans le répertoire racine de src , afin que vous puissiez directement importer et continuer à importer
  • Quelles sont les manières d’importer des packages Python ?

    IcifromRe-import est dû au fait qu'il n'y a qu'une seule fonction dans make_env.py qui est make_env(), vous pouvez donc directement importer cette fonction et l'appeler directement Écrivez le nomQuelles sont les manières d’importer des packages Python ?

    S'il s'agit de from env import make_env , alors lors de l'appel de la fonction make_env() dans make_env.py, vous devez également la déclarer avec .
  • PS : from env import make_env est le même que import env.make_envLe fichier exécutable et le module cible importé sont pas dans le même répertoire

    Si le fichier exécutable et le module ne sont pas dans le même répertoire, alors l'importation directe est 🎜Le module personnalisé 🎜 est introuvable. 🎜🎜Quelles sont les manières d’importer des packages Python ?🎜🎜Quelles sont les manières d’importer des packages Python ?🎜🎜Par exemple, dans ce cas : Vous devez importer le package pwcong dans main.py pour exécuter __init__.py🎜🎜Cependant, main.py se trouve sous ./Torch/main/, et pwcong est sous ./Torch/ 🎜🎜 n'est pas dans le même répertoire pour le moment, le fichier main.py 🎜 n'inclut pas dans. la liste des chemins recherchés par le module interpréteur python. ./Torch🎜🎜Donc à ce moment, vous devez utiliser le package sys fourni avec python pour importer 🎜le chemin du module personnalisé🎜, puis ajoutez manuellement l'interpréteur Python dans main. La 🎜 liste des chemins de recherche du module🎜 dans py peut être importée avec succès après 🎜

    Liste des chemins du module de recherche de l'interpréteur Python

    🎜🎜 in En Python, lorsque vous 🎜importez un module🎜, l'interpréteur 🎜trouvera le module 🎜 parmi une liste de chemins. 🎜🎜🎜🎜Cette liste de chemins comprend généralement le 🎜chemin par défaut pour l'installation de l'interpréteur Python🎜, ainsi que tous les chemins 🎜 spécifiés dans la 🎜variable d'environnement PYTHONPATH. 🎜🎜🎜🎜Utilisez la fonction sys.path.append() pour 🎜ajouter un nouveau chemin🎜 à cette liste de chemins afin que l'interpréteur puisse trouver le module que vous spécifiez. 🎜🎜🎜🎜Après avoir ajouté un nouveau chemin, vous pouvez importer le module sous le chemin via l'instruction import. 🎜🎜🎜🎜Cela n'affecte 🎜pas l'espace de noms 🎜 mais simplement 🎜indique à l'interprète 🎜où trouver le module à importer. 🎜🎜

Étapes de fonctionnement

🎜Les étapes pour importer un module personnalisé sont les suivantes : 🎜
    🎜🎜Importez d'abord le module sys🎜🎜🎜 🎜 puis passez la fonction sys.path.append(path) pour importer le répertoire où se trouve le 🎜module personnalisé🎜🎜🎜🎜🎜Importez le module personnalisé. 🎜🎜
🎜Autrement dit, écrivez le code suivant dans les premières lignes de main.py pour définir manuellement le chemin de l'interpréteur python du fichier🎜rrreee🎜Dans __init__.py Définissez une fonction hello dans et imprimez hello🎜🎜Quelles sont les manières d’importer des packages Python ?🎜🎜via sys. path.append Ajoutez le chemin recherché par le module interpréteur, puis exécutez la fonction via le nom du module 🎜🎜Quelles sont les manières d’importer des packages Python ?🎜🎜a Les modules doivent avoir un fichier __init__.py 🎜🎜En Python, 🎜pour qu'un répertoire🎜 soit considéré comme un 🎜package🎜, il doit contenir un __init__.py fichier. Ce fichier peut être un fichier vide ou contenir du code d'initialisation du package. 🎜🎜Un répertoire sans fichier __init__.py n'est qu'un répertoire. Les autres fichiers py ne peuvent pas importer de fonctions dans aucun fichier py de ce répertoire. 🎜🎜Le fichier __init__.py peut. Contient : 🎜
    🎜🎜🎜 Espace de noms de déclaration 🎜 : le fichier __init__.py peut contenir des déclarations de variables, de classes et de fonctions 🎜🎜🎜🎜🎜Code d'initialisation 🎜 : Le fichier 🎜init🎜.py peut contenir du code d'initialisation qui sera exécuté lors de l'importation du package. Cela peut être utilisé pour effectuer certaines opérations nécessaires, telles que configurer un package ou garantir que les dépendances d'un package sont installées. 🎜🎜🎜🎜🎜Importation de sous-modules🎜 : Le fichier 🎜init🎜.py peut contenir du code qui importe d'autres modules. Cela peut être utilisé pour ajouter des sous-modules à l'espace de noms d'un package afin que les utilisateurs puissent y accéder. 🎜

Namespace

En Python, un espace de noms est un dictionnaire contenant des noms de variables et de fonctions, utilisé pour enregistrer le nom et la valeur de chaque identifiant (identifiant). Chaque espace de noms de l'interpréteur Python est un objet dictionnaire dont les variables et les fonctions sont accessibles via les paires clé-valeur du dictionnaire.

Il existe trois espaces de noms en Python :

  • Espace de noms intégré : Contient les variables et fonctions intégrées à l'interpréteur Python. Ces variables et fonctions peuvent être utilisées directement dans le programme sans importer de modules, par exemple : Fonction print(), fonction len(), etc. print()函数、len()函数等。

  • 全局命名空间:在模块定义时创建,包含了在模块文件中定义的变量和函数。可以在模块中的任何地方使用这些变量和函数。

  • 局部命名空间:在函数调用时创建,包含了函数中定义的变量和函数。只能在函数内部使用这些变量和函数。

命名空间的作用是避免不同命名空间之间的变量或函数名冲突,并且可以更好地管理程序中的变量和函数。在Python中,可以通过使用globalnonlocal

🎜🎜🎜Espace de noms global🎜 : Créé lors de la définition du module, il contient des variables et des fonctions définies dans le fichier du module. Ces variables et fonctions peuvent être utilisées n'importe où dans le module. 🎜🎜🎜🎜🎜Espace de noms local🎜 : Créé lorsqu'une fonction est appelée, il contient des variables et des fonctions définies dans la fonction. Ces variables et fonctions ne peuvent être utilisées qu’à l’intérieur de fonctions. 🎜🎜🎜🎜Le rôle de l'espace de noms est d'éviter les conflits de noms de variables ou de fonctions entre différents espaces de noms, et de mieux gérer les variables et les fonctions dans le programme. En Python, les variables des espaces de noms globaux et non locaux sont accessibles et modifiées à l'aide des mots-clés global et nonlocal. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer