«

python包导入的方式有哪些

时间:2024-7-23 09:42     作者:韩俊     分类: Python


这篇文章主要介绍了python包导入的方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python包导入的方式有哪些文章都会有所收获,下面我们一起来看看吧。

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

直接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
中的模块搜索的路径列表 , 之后才能成功导入

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

    在Python中,当你导入一个模块时,解释器会从一个路径列表中查找该模块

    这个路径列表通常包括Python解释器安装的默认路径,以及在环境变量

    PYTHONPATH
    中指定的任何路径

    使用

    sys.path.append()
    函数可以向这个路径列表中添加新的路径,以便解释器能够找到你指定的模块。

    添加新路径后,你就可以通过

    import
    语句导入该路径下的模块。

    这并不会影响命名空间,而只是告诉解释器在哪里可以找到要导入的模块。

操作步骤

导入自定义模块的步骤如下:

    先导入sys模块

    然后通过

    sys.path.append(path)
    函数来导入自定义模块所在的目录

    导入自定义模块。

即在

main.py
的最上面几行写入如下代码手动定义该文件的python解释器路径

import sys
sys.path.append(r"C:UsersPCDesktopTorch") # 要加上地址生命符r, 并且要是绝对路径

__init__.py
中定义一个hello函数, 打印hello

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

一个模块必须要有

__init__.py
文件

在Python中,一个目录要被视为一个,它必须包含一个

__init__.py
文件。这个文件可以是一个空文件,或者包含一些包初始化的代码。

没有

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

__init__.py
文件可能包含:

    声明命名空间

    __init__.py
    文件可以包含变量、类和函数的声明

    初始化代码init.py文件可以包含初始化代码,这些代码会在包被导入时执行。这可以用于执行某些必要的操作,如配置包或确保包的依赖项已安装。

    子模块导入init.py文件可以包含导入其他模块的代码。这可以用于将子模块添加到包的命名空间中,以便用户可以访问它们。

命名空间

在 Python 中,命名空间是一个包含变量和函数名字的字典,用于记录每个标识符(identifier)的名称和值。Python 解释器中的每个命名空间都是一个字典对象,可以通过字典的键值对来访问其中的变量和函数。

Python 中有三种命名空间:

    内置命名空间:包含了Python解释器内置的变量和函数,这些变量和函数可以直接在程序中使用而不需要导入任何模块,例如:

    print()
    函数、
    len()
    函数等。

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

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

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

global
nonlocal
关键字来访问和修改全局和非局部命名空间中的变量。

标签: python

热门推荐