2016-07-10 242 views
0

我似乎無法理解這一點,也不太明白髮生了什麼。我有一個包含兩個類文件的目錄。使用該目錄中的REPL,我可以導入這兩個文件並執行其邏輯。然而,從它們的父目錄中運行main(),只有一個類文件是可見的,可分頁的。自定義Python模塊沒有導入

這個項目的結構目前,

project/ 
    src/ 
     __init__.py # empty 
     pagingsimulation.py # main() imports memory 
     process.py 
     memory/ 
      __init__.py # imports pagetable.py 
      pagetable.py # visible 
      page.py # error 

pagingsimulation.py能夠導入內存/和實例pagetable.PageTable,但一旦我創建page.py,不得不pagetable.py進口page.py,pagingsimulation。 py現在在執行時拋出這個錯誤。

Traceback (most recent call last): 
    File "pagingsimulator.py", line 5, in <module> 
    import memory 
    File "src/memory/__init__.py", line 1, in <module> 
    from .pagetable import PageTable 
    File "src/memory/pagetable.py", line 1, in <module> 
    import page 
ImportError: No module named 'page' 

存儲器內/ __ init__.py我現在有,

from .pagetable import PageTable 

......但試過很多其他的變化都沒有成功。

我已經嘗試了多種方法並對此進行了一段時間的研究,也許這是我目前無法看到的。什麼是阻止我的自定義模塊從main()運行時互相導入?

+0

根據頂部的目錄佈局,'src'和'memory'是兄弟目錄,但是回溯指的是'src/memory/...' –

+0

'import page'只有在父目錄'project/src/memory')在你的'PYTHONPATH'上。 –

+0

@JohnGordon這是一個格式錯誤。感謝您的支持。內存是src的子目錄,(即project/src/memory / –

回答

0

我懷疑的解決方案是一個路徑問題,更具體地說,就是一旦將模塊導入到父文件pagingsimulation.py中後,如何進行交互。

因此,要解決這個問題,它沒有什麼做__init__.py而是我如何訪問pagetable.py內page.py

所以pagingsimulator.py用途,

import memory 

而且記憶中,在初始化 .py文件都有,

from .pagetable import PageTable 

對於頁表訪問頁,import語句必須是,

from memory import Page 

這似乎有點時髦給我,失敗了很多次後,我想說有一個更清潔的方式做到這一點,但暫時我會帶我的勝利,希望離開這個這裏的問題會使其他人受益,因爲我在搜索過程中無法找到類似的東西。

相關問題