Python:将scrypt从子文件夹导入到另一个子文件夹

时间:2019-09-24 08:59:16

标签: python python-2.7 python-import python-module

我正在处理某些python项目(2.7),但是导入有问题。当我运行main.py时,它从tests文件夹等启动脚本,然后将输出保存到日志中,一切正常。

/root------------
        -logs
        -staticCfg
           -config.py
        -tests
           -systemTest
              -scrypt1.py
              -scrypt2.py
           -userTest
              -uScrypt1.py

main.py

我的静态变量(电子邮件,姓名等)位于config.py中。我需要在config.pyscrypt1.py中导入scrypt2.py。我尝试将__init__.py添加到测试,systemTest和staticCfg文件夹中,但总是收到错误消息。

在我的scrypt1.py中:

import staticCfg as cfg
...

from staticCfg import *
...

我得到了错误:

ImportError: No module named staticCfg

2 个答案:

答案 0 :(得分:0)

Python的导入机制可能有些棘手。

有关更多信息,请参考文档:Python Import Mechanism

当您像使用绝对导入一样(导入不以.开头)时,导入路径将从主脚本(您启动的脚本)开始。您的情况是scrypt1.py。因此,从该位置开始,python找不到软件包staticCfg

对我来说,最简单的解决方案是在根目录中创建一个主脚本,然后从那里调用scrypt1.py(使用from tests.systemTet import scrypt1.py导入)。在这种情况下,基本软件包将是您的root文件夹,并且您可以根据需要从所有脚本文件访问软件包staticCfg

答案 1 :(得分:-1)

您可以将根文件夹添加到PYTHONPATH。