2016-05-15 95 views
8

我是一名Python初学者。在我开始之前,这里是我的Python的文件夹结构Python - 未找到模块

-project 
----src 
------model 
--------order.py 
------hello-world.py 

src我有一个名为model文件夹其中有一个名为order.py Python文件,其内容如下:

class SellOrder(object): 
    def __init__(self,genericName,brandName): 
     self.genericName = genericName 
     self.brandName = brandName 

接下来我hello-world.pysrc文件夹内,高于order.py

import model.order.SellOrder 

order = SellOrder("Test","Test") 

print order.brandName 

每当我运行python hello-world.py它导致错误

Traceback (most recent call last): 
    File "hello-world.py", line 1, in <module> 
    import model.order.SellOrder 
ImportError: No module named model.order.SellOrder 

有什么我错过了吗?

+0

如果__init__.py应该是什么内容? – user962206

+0

https://docs.python.org/2/tutorial/modules.html#packages –

+0

'__init __。py'可以为空或可以包含代码。项目在包级别公开他们的主要/公共类是很常见的。在你的情况下,你可以添加'from model.order import SellOrder',以便其他代码可以从项目导入Sellorder而不是从project.model.order导入SellOrder。 – miraculixx

回答

4

Python中的所有模块都必须具有特定的目录结构。 You can find details here.

创建model目录下名为__init__.py一个空文件,这样,你的目录结构看起来是这样的:在你的hello-world.py文件

. 
└── project 
    └── src 
     ├── hello-world.py 
     └── model 
      ├── __init__.py 
      └── order.pyc 

也改变了import语句如下:

from model.order import SellOrder 

这应该修复它:)

PS :如果您将model目录放置在其他位置(不在同一目录分支中),则必须使用sys.path修改python路径。

+3

也有人认为不要有'src'目录。这也是有意义的,因为如果你将代码导入别的地方,你应该可以'import project.model'而不是'project.src.model'。 – miraculixx

+1

@miraculixx绝对! – RafazZ

0

你需要(每边两个下划线),每个文件夹命名为__init__.py文件的层次,所以一个在src/,一个在model/。这是python查找它应该访问特定文件夹的内容。这些文件旨在包含初始化指令,但即使您将它们创建为空,也可以解决此问题。