问题描述
使用pycharm时通常需要跨py文件调用,此时我们需要import自定义的包。
我们以下图所示的情况为例:我们在test.py中希望import utils这个包 
首先我们用下面这行代码尝试import,但是发现不可行
import lab0.utils as p1
此时报错:ModuleNotFoundError: No module named 'lab0' 
下面介绍三种方法 导入自定义包
方法1:适用于import同目录下的包
import utils as p1
去掉父目录lab0,直接import utils 如果一直在同目录下import包的话,这种方式还是比较省事的。
方法2:适用于import相同/不同目录下的包
import lab.lab0.utils as p1
在原来的导入项前加上了lab0的上级目录。 这种方法的好处在于Pycharm不会编译时下划线警告了,而且打出utils.时还会自动提示utils中的类和函数。
方法3:添加父目录到Python的搜索目录模块的路径集中
import sys
sys.path.append("..")
import lab0.utils as p1
通过这种方式,python程序会在上一级查找相应的其他python包或者文件。
这种方法没改变原来我们的想法:import 上级目录名.包名 ,而且最开始sys.append了之后对于上级目录下的其它包可以一劳永逸。
参考链接
python脚本中的sys.path.append("…")详解
|