簡體   English   中英

如何在開發時調試 python 模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM