我是python的新手,所以我可能会丢失(也可能是)导入系统的一些关键部分,但我不能为我的生活弄清楚这一点。我有一个目录结构如下:
/
/always_run.py
/lib/__init__.py
/lib/data.py
/lib/config.py
档案内幕(进口):
/always_run.py
from lib import data
/lib/data.py
from lib import config
产量
Traceback (most recent call last):
File ".\data.py", line 9, in <module>
from lib import config as configs
ModuleNotFoundError: No module named 'lib'
注意:我也尝试过:
from . import config
产率:
Traceback (most recent call last):
File ".\data.py", line 9, in <module>
from . import config as configs
ImportError: cannot import name 'config'
在data.py
内我也有:
if __name__ == "__main__":
print("loading myself")
只是为了测试,但它没有任何区别,它永远不会到达那一点
通常我将我的程序作为python always_run.py
运行,世界就是我的牡蛎,但如果我尝试直接运行data.py
,我总会遇到导入失败。 (首先cd
ing 进入lib
目录并运行python .\data.py
如果没有将本地目录添加到sys.path
,我就是不可能做到的,就像这样(测试,工作):
import sys
local_path = os.path.dirname(os.path.realpath(__file__))
if local_path not in sys.path:
sys.path.append(local_path)
import config
在编写本文的过程中,我进一步测试了cd
到父目录并运行python -m lib.data
,它运行完美。现在我的问题是好奇心,因为我还是找不到答案。是否无法从本地目录运行属于模块一部分的本地文件?或者必须从另一个目录中完成吗?