赞
踩
博主最近遇到了python导入模块的问题,各种搜索查阅发现网上的资料参差不齐且很多没有讲到重点,于是打算写一篇直击要害的文章,帮助后来者少踩坑。
目录结构如上图所示。module1包含两个子包module2和module3,依赖关系:module2中的test.py需要引入module3中的test2.py,然后你会发现,无论你怎么修改导入的代码,最后都会告诉你找不到模块。废话不多说,直接说要点。
python解释器是怎么查找模块的:sys.path
打开终端,进入python命令行,打印sys.path你会看到:
这些目录就是解释器查找模块的目录,而用户自己写的模块就是通过红圈那一个路径来查找的。这个红圈其实就是python脚本的文件目录(注意,不是工作目录),比如 :
工作目录是当前终端的目录!
看到这个sys.path[0]我想你应该知道咋回事了:解释器在test.py的文件目录D:\Study\Code\demo\python\module1\module2下根本找不到module3!
知道原因后解决办法就很简单,只需要将所需模块的目录添加进sys.path就可以了。必须要记住的一点:导入模块必须按照你添加的目录来!例如本例中,如果这样添加:
这样module1的目录(其下有module2和module3两个模块)告诉了解释器,就可以直接这样导入test2.py:
没有错误!
当然,添加目录这里可以很随便,只要调用保证能搜索到就行,比如你可以把所有自己写的模块放进一个总的文件夹,然后把这个文件夹目录添加到sys.path,调用的时候逐级调用即可!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。