2013-11-23 83 views
0

在我們的代碼庫重新加載一個包,我們有ASCII作爲默認編碼,我們需要將其更改爲UTF-8,所以在每一個python腳本,我們有這樣的:從全球python腳本

if not (sys.platform.startswith("win")): 
    reload(sys) 
    sys.setdefaultencoding('utf-8') 

我想這是在全局腳本,所以我創建了一個,並添加到所有的Python腳本

Globals.py 
------------------------------------------------------------------------------ 
import os 
import sys 

if not (sys.platform.startswith("win")): 
    reload(sys) 
    sys.setdefaultencoding('utf-8') 
... 

我們在bash_rc持有我們的項目的父目錄設置RIGHTIMPORT變量,所有的腳本可以很容易找到相關的文件那個相對路徑。所以導入Globals.py我添加下面的代碼到每個腳本:

import os 
import sys 
... 

# gets the RIGHTIMPORT path and adds it to PATH variable 
RIGHTIMPORT = os.popen("echo $RIGHTIMPORT").read()[:-1] 
IMPORT_PATH = RIGHTIMPORT + "/import/" 
sys.path.insert(0, IMPORT_PATH) 

# adding global constants and configurations 
from Globals import * 
... 

由於sys包是用來插入RIGHTIMPORTPATH它是從Globals導入所有的包之前進口。

我的問題是在執行from Globals import *後會不會重新加載sys?由於ASCII編碼很少發生,因此我無法確認它是否正常工作,因此係統無法正常工作。

感謝

+1

不需要啓動子流程來收集環境變量。 'os.environ'是一個包含環境變量集的字典。 – VooDooNOFX

回答

1

sys將重新加載。我建議將條件更改爲更頻繁發生的情況,並輸入print陳述,然後查看是否重新加載。

+0

你能否提供一些參考文獻,它提供了有關'reload'的更多信息,特定於我的案例,我在網上搜索了關於'reload'的信息,但是找不到任何用在其他腳本中的東西。 –