![](/img/trans.png)
[英]Python ModuleNotFoundError, importing between modules in project
[英]Importing another project as modules in python
假設我有一個以下結構的項目
projectfoo/
|- mymodule/
|--|- __init__.py
|--|- library.py
|- preprocessor.py
在mymodule
的__init__.py
中看起來像這樣
from . import library #library itself has other functions
def some_function():
blar blar blar...
和preprocessor.py
看起來像如下
import mymodule
def main():
something()
def something():
mymodule.some_function() # calls the function defined in __init__.py
if __name__ == '__main__':
main()
然后我開始projectbar
,它使用了大量的來自公共代碼projectfoo
。 因此,我希望將projectfoo
導入到項目欄中,而不是在項目之間復制和粘貼代碼,如下所示。
projectbar/
|- projectfoo/
|--|- mymodule/
|--|--|- __init__.py
|--|--|- library.py
|--|- preprocessor.py
|- index.py
所以我試圖按如下方式在我的index.py
導入preprocessor
from projectfoo import preprocessor
但是我收到一條錯誤消息,說preprocessor.py
現在無法導入mymodule
。
ImportError: No module named 'mymodule'
我這樣做正確嗎? 我正在使用在我的設置中的ubuntu 14.04中運行的python3.4。
編輯:我也嘗試將__init__.py
添加到projectfoo
,但我仍然遇到相同的錯誤
因為沒有將預處理器的路徑添加為庫包,所以出現此錯誤
from sys import path as pylib #im naming it as pylib so that we won't get confused between os.path and sys.path
import os
pylib += [os.path.abspath(r'/projectfoo')]
from projectfoo import preprocessor
僅供參考:os.path將返回絕對路徑。 但是sys.path將返回路徑env。 系統設置中的變量。
希望能幫助到你。
嘗試將空的__init__.py
添加到projectfoo
文件夾。
您必須在projectfoo/
文件夾中添加__init__.py
文件(可以為空),以使其成為有效模塊。
然后使用相對導入來顯式指定您正在請求當前模塊的子模塊mymodule
如下所示:
from .projectfoo import preprocessor
的.
代表包含import語句的文件所在的當前模塊。 其父模塊將表示為..
,其“祖父母”將表示為...
等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.