直接import
比如我要在ma_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
中的模块搜索的路径列表 , 之后才能成功导入
PYTHONPATH
中指定的任何路径。sys.path.append()
函数可以向这个路径列表中添加新的路径,以便解释器能够找到你指定的模块。import
语句导入该路径下的模块。导入自定义模块的步骤如下:
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
文件可以包含变量、类和函数的声明在 Python 中,命名空间是一个包含变量和函数名字的字典,用于记录每个标识符(identifier)的名称和值。Python 解释器中的每个命名空间都是一个字典对象,可以通过字典的键值对来访问其中的变量和函数。
Python 中有三种命名空间:
print()
函数、len()
函数等。命名空间的作用是避免不同命名空间之间的变量或函数名冲突,并且可以更好地管理程序中的变量和函数。在Python中,可以通过使用global
和nonlocal
关键字来访问和修改全局和非局部命名空间中的变量。
[Python3导入自定义模块的3种方式](