2012-02-26 130 views
0

我在跟蹤這件事時遇到了一些麻煩。當我不在virtualenv下執行'python -m site'時,我得到了一個很好的輸出結果,列出了我的sys.path目錄和其他東西。當我切換到virtualenv時,沒有輸出。我簡單地看了一下https://github.com/pypa/virtualenv/blob/develop/virtualenv.py下的代碼,我可以看到virtualenv創建它自己的site.py - 但這個模塊仍然有__main__掛鉤,並且當我從解釋器中導入並調用在if __name__ == '__main__'下執行的任何獲取時,它都可以工作。當我嘗試通過-m開關執行它時,有什麼區別?爲什麼在virtualenv下python -m站點沒有輸出?

回答

0

我對這個問題有點感興趣。所以我做了一些黑客。

首先,我通過插入print(__name__)行來更改site.py在python庫目錄中。結果是

$ python -m site 
site 

接下來,我添加了一些文件mymodule.py到庫文件夾使用單線print(__name__)。現在的結果是

$ python -m mymodule 
site 
__main__ 

所以似乎網站模塊之前python -m site命令導入將運行該模塊作爲腳本。當它再次用於腳本執行時,python會省略二次導入。

相關問題