python——导入包的那些事
1、问题描述:当自己定义了一个python包,采用from .包名 import 函数名/变量名
的方式时,直接运行该文件会产生'\__main__' is not a package
的错误。
2、问题解决:
目录结构如下:
图中所标出的文件就是采用from .
的方式导入函数的文件。直接运行该文件产生的错误是:
从其返回的错误信息可以知道,__main__.hm_message
不是一个模块,我们知道在main函数执行时,__name__这个变量值是__main__
.当采用from .
的方式运行的时候,.
就代表__name__这个变量
。所以要想采用这种方式来导入包就需要在其他模块中调用hm_import_pkg
。
也就是在sharik文件夹下的w.py中调用hm_import_pkg
,代码如下:
运行该程序则可间接地使用from .
的方式导入包。
总结:导入包还是不要采用相对路径的方式,采用绝对路径就不会有这些坑。。。