ImportError:没有名为_____的模块

时间:2013-07-31 00:01:00

标签: python

在SO中存在许多问题,这个问题略有不同。我见过的答案都没有解决我的问题,所以我问了一个新问题。

我有这个文件夹结构:

/myapp/
   \__init__.py
    modu1.py
    modu2.py

__init__.py 为空

modu1.py

class TestMod1Class():
    def msg(self):
        print "Hello World!"

modu2.py

import myapp.modu1 

obj = myapp.modu1.TestMod1Class()
obj.msg()

如果从目录/ myapp /我运行python modu2.py我得到:

Traceback (most recent call last):
  File "modu2.py", line 1, in <module>
    import myapp.modu1
ImportError: No module named myapp.modu1



我做错了什么?我读过the docs,但仍然无法理解这一点。

2 个答案:

答案 0 :(得分:6)

您已位于myapp模块中,位于myapp文件夹中。因此,您不需要使用import myapp.modu1语法,而应使用import modu1

例如:

import modu1

obj = modu1.TestMod1Class()
obj.msg() # output: Hello World!

注意:我在Python 3中测试过,因为我的机器上没有2,但它应该是相同的(我编辑modu1以使用新的print语法)。

答案 1 :(得分:2)

  

如果从目录/ myapp /我运行python modu2.py我得到

如果直接运行模块,它不会作为它可能属于的包的一部分运行。因此,导入myapp.modu1会查找myapp/myapp/modu1.py,这显然不是它的位置。

如果您希望myapp包工作,则必须从根目录开始执行。因此,在main.py文件夹旁边添加myapp

/main.py
/myapp
    /__init__.py
    /modu1.py
    /modu2.py

从那里,你可以做到:

import myapp.modu2

然后你必须从python main.py开始。