[英]how to debug python modules while developing
假設我們正在開發一個簡單的 python 模塊,其目錄結構如下
.
├── module
│ ├── __init__.py
│ ├── core.py
│ └── helpers.py
└── test.py
init.py的內容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from .core import print_values
core.py 的內容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from .helpers import values
def print_values():
print(values)
if __name__ == '__main__':
print_values()
helpers.py 的內容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
values = [0, 2, 6]
test.py 的內容
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from module import print_values
print_values()
現在,如果我們運行帶有'.'
python test.py
作為工作目錄,我們得到[0, 2, 6]
的預期 output。 偉大的!
所以這就是問題所在,如果我們將工作目錄更改為'./modules'
並運行python3./core.py
,則會引發以下錯誤:
ImportError: attempted relative import with no known parent package
所以問題是如何以我們可以在開發期間從其中運行 python 腳本的方式設計模塊?
所以問題似乎是相對導入加上from
關鍵字試圖導入一個__init__.py
文件。
換句話說,這條線
from .helpers import values
嘗試讀取 ./modules/helpers/ init .py,它不存在。 為了使其工作,我們將導入更改為:
if __name__ == '__main__':
from helpers import values
else:
from .helpers import values
注意:由於谷歌上有很多鏈接可以從其他用例中解釋這個問題(例如使用 setup.py 作為可能的解決方案),我認為發布這個特定案例是個好主意,因為我沒有遇到它在尋找答案時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.