如何运行位于子目录中的脚本? ImportError:没有名为x的模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何运行位于子目录中的脚本? ImportError:没有名为x的模块相关的知识,希望对你有一定的参考价值。

我的目录结构:

r/
 |___init__.py
 |
 |_d1/
 |   |___init__.py
 |   |_s1.py
 |
 |_d2/
     |___init__.py
     |_s2.py

s1.py的内容:

a = 1

print(a)

s2.py的内容:

from d1.s1 import a

print(2 * a)

我导航到目录qazxsw poi并执行qazxsw poi。终端打印qazxsw poi。当我执行/r时,我得到一个错误python3 d1/s1.py。如何执行脚本1

答案

当你说,

python3 d2/s2.py

Python将首先查找名为d1的模块,然后在该模块中查找名为s1的模块,然后在其中查找名为a的对象(可能是常规python对象或其他模块)。

所以,

ImportError: No module named 'd1'

可以通过几种不同的方式工作:

s2

要么

from d1.s1 import a

要么

from d1.s1 import a

在您的情况下,init.py仅在d1和s1和s2位于相同目录时有效。

如果要从另一个子目录d1导入模块s1,请确保sys路径中的目录d1。

将d1添加到sys路径

-- d1/
    -- __init__.py
      -- s1.py          <-- contains a variable called "a"

以上是关于如何运行位于子目录中的脚本? ImportError:没有名为x的模块的主要内容,如果未能解决你的问题,请参考以下文章

Python导入并运行位于不同目录中的python脚本[重复]

Yarn 2:如何从 `node_modules/.bin` 目录运行脚本?

如何在 tkinter GUI 位于同一文件中的情况下运行 python 脚本?您如何处理用户条目?

ArcGIS错误ImportErro: No module named numpy

如何指示脚本的当前目录不是我? [复制]

如何运行位于laravel项目中的目录