python导入其他目录下模块的四种情况

2022-12-09 56阅读 0评论

?=关键:被导入模块所在文件夹路径需要出现在sys.path中

Python中从其他目录中导入模块的关键是:系统(sys)能够找到通向模块文件的路径,即,sys.path中含对应模块文件的路径。

python中导入其他目录下的模块,本文主要介绍以下四种情况:

从当前目录下导入模块从当前目录的子目录中导入模块从当前目录的父目录导入模块通用:从任意文件夹路径下导入模块。

1. 从当前目录导入模块

这种情况的程序结构如下:

--base_DIr |--module1.pydef func1()def func2() |--module2.py

要想在module2.py中导入module1.py中的func1,func2函数,直接使用以下命令即可。

# 在module2.py中 from module1 import func1,func2

2. 从当前目录的子目录中导入模块

程序结构如下所示:

--base_dir |--son_dir||--module1.py def func1() def func2() |--module2.py

此时,要想在module2.py中导入module1.py中的func1,func2函数,需要在module1.py所在的文件夹son_dir添加一个__init__.py文件,只有这样,son_dir才会成为一个package,否则不能调用

此时,程序结构如下:

--base_dir |--son_dir||--__init__.py # 新增加的文件,可以为空,使son_dir变成可调用的package||--module1.py def func1() def func2() |--module2.py

然后,就可以在module2.py中以以下形式引入module1.py中的文件。

# 在module2.py中 from son_dir.module1 import func1,func2

3. 从父目录中导入模块

程序结构示意图如下:

--base_dir |--module1.pydef func1()def func2() |--son_dir||--module2.py

我们想在 son_dir.module2.py中导入base_dir.module1.py中的func1,func2函数。

此时我们需要进行如下处理

# 脚本 mudule2.py 中 import sys sys.path.append("..") # 将父目录放入系统路径中,不需要再base_dir中增加__init__.py脚本。 # 备注:sys.path.append中的内容也可以是module1.py 所在文件夹的全局路径 from module1 import func1,func2

4. 通用:从任意文件夹路径下导入模块

如以上分析,python中导入某个模块,只需要该模块所在的文件夹路径在sys.path中即可,所以,我们可以用以下通用方式处理模块导入的问题。

程序结构示意图:

--any_dir1 # 任意文件夹位置 |--mudule1.pydef func1()def func2()--any_dir2 # 任意文件夹位置 |--module2.py

我们想在module2.py中导入module1中的func1,func2,与情况3相似,我们可以用以下处理:

# 脚本 mudule2.py 中 import sys sys.path.append("/global/path/to/any_dir1") # 将module1所在的文件夹路径放入sys.path中 from module1 import func1,func2

参考:https://blog.csdn.net/zhang89xiao/article/details/53521366

总结

到此这篇关于python导入其他目录下模块的四种情况的文章就介绍到这了,更多相关python导入其他目录模块内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:Goliszhou@gmail.com
$

发表评论

表情:
评论列表 (暂无评论,56人围观)

还没有评论,来说两句吧...