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.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
et env package
se trouvent tous deux dans le répertoire racine de src , afin que vous puissiez directement importer et continuer à importerIcifrom
Re-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 nom
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_env
Le fichier exécutable et le module cible importé sont pas dans le même répertoire
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 🎜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. 🎜🎜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🎜🎜🎜🎜via sys. path.append Ajoutez le chemin recherché par le module interpréteur, puis exécutez la fonction via le nom du module 🎜🎜🎜🎜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 : 🎜__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. 🎜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中,可以通过使用global
和nonlocal
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!