自学python时遇到一个很诡异的问题,工程结构如下:
每次一运行C5文件,就报错 ModuleNotFoundError: No module named 'study'
但是直接import c4的话就没问题
思索了一下,应该是包的引用路径存在问题,有两个方法可以解决
1.在代码中加入
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # __file__获取执行文件相对路径,整行为取上一级的上一级目录
sys.path.append(BASE_DIR)
但是感觉这个方法治标不治本,每次要引用自己包的时候都加这么一段话挺烦的
2.在python的安装路径下的site-packages文件夹中增加指定路径
我的python是安装路径:G:\python工具\Lib\site-packages
我这个包所在的workspace在:E:\python\
所以在site-packages文件夹下创建一个记事本文件,名字取什么随便,后缀名改为.py
里面的路径写包所在的路径 E:\python\
最后这样就OK了,文件为pythonwork。但这么做的具体原理是什么我搞不太清楚,还望大神指点一下,因为我看python的教程里并没提到要配置这么个东西。
3.还有一种导致无法自定导入包的问题是因为
运行的入口文件,和所需要引入的文件,是在同一个包下,例如下图中去通过运行引入了testone的dem包就会运行失败
因为dem和testone都是在newma文件夹下。必须得是像mainfile一样,才可以引入成功。
为这个问题纠结了好久希望可以帮助到有此困惑的同志。