使用本地导入在本地运行模块(作为模块和)作为脚本

时间:2017-07-19 17:53:58

标签: python module python-import

我是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,它运行完美。现在我的问题是好奇心,因为我还是找不到答案。是否无法从本地目录运行属于模块一部分的本地文件?或者必须从另一个目录中完成吗?

0 个答案:

没有答案