2017-07-19 62 views
2

如何使python中的特殊變量__debug__適用於已安裝python setup.py install然後導入的模塊?Python的__debug__特殊變量不適用於導入的模塊

目前,我正在其中有一個函數下面的語句包:

 ... 
    if __debug__: 
     print "HERE", __debug__ 
    ... 

當我導入,我與python -OO file.py運行一個程序包,並調用一個函數,它最終調用功能,我看到在標準輸出:

HERE False 
HERE False 
HERE False 
... 

所以這讓我覺得,if __debug__:轉化爲if True:單獨的的在導入時定義了0變量。

因此,我也嘗試安裝與python -OO setup.py install包,但這並沒有解決問題。當我在獨立文件中使用if __debug__:時,我能夠看到__debug__的預期行爲,並通過優化執行,但在導入它時沒有執行。

如何使__debug__變量適用於導入的模塊?

+1

此問題可能會對您有所幫助:https://stackoverflow.com/q/22619681/270986 –

+1

您是否沒有安裝'.py'文件? – user2357112

+0

謝謝@MarkDickinson,我會檢查一下。乍一看這可能是一個不同的問題,但我還不確定。 – Miles

回答

2

感謝您在評論部分的幫助。它終於成功 - 運行:

python setup.py --help install 

顯示了一個選項列表。然後,很明顯我正在安裝不正確的優化。我需要運行:

python setup.py install -O2 

在編譯我的模塊時打開優化。關於@MarkDickinson發佈的問題:python assert fires with -O,事實證明,字節編譯模塊事實上預先設置了if __debug__:語句,這意味着__debug__確實在以後被重新定義,而對if塊沒有影響。

另一種選擇是與安裝:

python setup.py install --no-compile 

應該放下一切爲的就是讓你可以重新定義__debug__