2016-05-15 197 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查找它應該訪問特定文件夾的內容。這些文件旨在包含初始化指令,但即使您將它們創建爲空,也可以解決此問題。