python包导入的方式
创始人
2025-06-01 16:18:33
0

python包导入的方式

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

直接import

比如我要在ma_main.py中导入env包中的make_env.py文件, 从而读取其中的函数

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

image-20230322155321881

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

image-20230322155503974

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

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

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

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

image-20230322162705612

image-20230322162800118

例如这种情况: 要在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语句导入该路径下的模块。
  • ​ 这并不会影响命名空间,而只是告诉解释器在哪里可以找到要导入的模块。

操作步骤

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

  1. 先导入sys模块
  2. 然后通过sys.path.append(path) 函数来导入自定义模块所在的目录
  3. 导入自定义模块。

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

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

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

image-20230322190716566

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

image-20230322190633736

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

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

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

__init__.py文件可能包含:

  • 声明命名空间__init__.py文件可以包含变量、类和函数的声明
  • 初始化代码init.py文件可以包含初始化代码,这些代码会在包被导入时执行。这可以用于执行某些必要的操作,如配置包或确保包的依赖项已安装。
  • 子模块导入init.py文件可以包含导入其他模块的代码。这可以用于将子模块添加到包的命名空间中,以便用户可以访问它们。

命名空间

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

Python 中有三种命名空间:

  1. 内置命名空间:包含了Python解释器内置的变量和函数,这些变量和函数可以直接在程序中使用而不需要导入任何模块,例如:print()函数、len()函数等。
  2. 全局命名空间:在模块定义时创建,包含了在模块文件中定义的变量和函数。可以在模块中的任何地方使用这些变量和函数。
  3. 局部命名空间:在函数调用时创建,包含了函数中定义的变量和函数。只能在函数内部使用这些变量和函数。

命名空间的作用是避免不同命名空间之间的变量或函数名冲突,并且可以更好地管理程序中的变量和函数。在Python中,可以通过使用globalnonlocal关键字来访问和修改全局和非局部命名空间中的变量。

参考文档

[Python3导入自定义模块的3种方式](

相关内容

热门资讯

荒野的呼唤兔子用什么哨子 荒野的呼唤兔子用什么哨子兔子哨子。猎人荒野的2级武器兔子哨子比较适合呼唤兔子,它巧裂明是对新手孝告友...
幼儿看到故事书中的“坏人”,常... 幼儿看到故事书中的“坏人”,常常会把他抠掉,这是(   )表现。幼儿看到故事书中的“坏人”,常常会把...
东北警察故事2为啥相亲 东北警察故事2为啥相亲 为了脱单。根据《东北警察故事笑顷2》内容得知,李红旗为了脱单开始了各式各...
龙族2出了么 龙族2出了么出来了我的同学已经买到手了出来好长时间了 。。出来很久了,如果有爱的话建议去书店买正版...
关于国泰国证信息技术创新主题交... 公告送出日期:2025年6月3日一、公告基本信息■二、其他需要提示的事项为满足广大投资者的投资需求,...
关于飞向你的床 关于飞向你的床这首歌到最后光光唱的时候后面有一个哭泣声好像是CK这个哭泣声说了什么?哪位大大听清楚了...
创业好商机节目,创业节目宣传语...         随着人们生活水平的提高,一些人手里有了一些闲钱,不愿意每个月挣固定的工资。所以我想创...
让中华优秀传统文化成为最美的风... 转自:光明网  光明日报记者 訾谦  今年端午假期,恰逢“我的铁路风景”主题宣传第二季活动火热开展,...
创业笔记入门视频教程,大学生创...         分享3个零成本项目,超级简单,随时可以落地,一个人一部手机,宅在家就能做的赚钱项目,...
创业的故事,创业是讲故事吗 创...   Airbnb联合创始人兼首席战略官白思齐从14岁到大一就赚了100万美元。          q...
玉石鉴定教程,和田玉创意视频 ...   大家好!我是西溪,在万文做了八年多的行业。我听说过大川万文行业被骗的故事。我很清楚这个行业“水深...
创业投资人平台,梅州市海外客创...   来源:人民日报      ?2022年1月9日,我市新增新冠肺炎阳性感染者20例。经多方调查,现...
老友记原声mp3 老友记原声mp3已发送 注意查收
水上游乐场儿童乐园文案,水上乐...   1、你想念别的女人,别人也想念你的女人。      2.当我发一个悲伤的副本时,你以为我是在笑着...
股票注册开户流程,创业板怎么把...   创业板2.0版本时代即将到来,很多人会好奇,关注创业板注册制上市的第一只股票能涨多少。不过我个人...
土总统称俄乌第二轮谈判取得“重... 土耳其总统埃尔多安2日在安卡拉说,就和平解决俄乌冲突,他提议举行一次有俄罗斯、乌克兰和美国领导人参加...
创业成功的人怎么找客户,创业成...   职场是一个江湖,如何做人是一个非常复杂的系统。      职场上没有刀,但我们还是可以看到,有些...
流光溢彩摩羯壶 转自:内蒙古日报□本报记者  高玉璞  通讯员 姜子强  龙首鱼身的摩羯卧在仰莲座上,口含宝珠,嘴的...
爱情十八拍指哪十八拍 爱情十八拍指哪十八拍爱情+八拍是古天杀的爱情歌曲
中医专长医师资格证的考核内容是... 中医专长医师资格证的考核内容是什么?在线等!!!多少钱,怎么办理