### 編程向導4.2 控制環境
許多環境變量可以用來控制Kivy的初始化和行為。
例如限制文本渲染使用PIL實現:
$ KIVY_TEXT = pil python main.py
環境變量需要在導入Kiry之前設置:
import os
os.environ['KIVY_TEXT'] = 'pil'
import kivy
#### 一、路徑控制
##### V1.0.7版本加入
你可以控制諸如配置文件、模塊、擴展和Kivy數據的默認路徑
**KIVY_DATA_DIR:**Kivy數據默認路徑<kivy path\>/data
**KIVY_EXTS_DIR:**Kivy擴展默認路徑<kivy path\>/extensions
**KIVY_MODULES_DIR:**Kivy模塊默認路徑<kivy path\>/modules
**KIVY_HOME:**Kivy主默認路徑,該路徑被用來作為本地配置,該路徑必須是可寫入的,默認為:
*     桌面系統:<user home\>/.kivy
*     安卓系統:<android app path\>.kivy
*     IOS 系統:<user home\>/Documents/.kivy
##### V1.9.0版本加入
**KIVY_SDL2_PATH:**如果設置,在編譯Kivy時將從該路徑尋找SDL2庫和頭文件,代替系統方面的路徑。為使用相同的庫,在編譯Kivy應用程序時,路徑必須在PATH環境變量啟動前添加。
>在編譯Kivy時必須使用,在執行時沒有必要。
#### 二、配置
**KIVY_USER_DEFAULTCONFIG:**如果該配置被設置,則Kivy不會讀取用戶的配置文件
**KIVY_NO_CONFIG:**如果設置,則沒有配置文件及用戶配置路徑進行讀寫
**KIVY_NO_FILELOG:**如果設置,則不會記錄日志到一個文件
**KIVY_NO_CONSOLELOG:**如果設置,則日志不會輸出到控制臺
##### V1.9.0版本加入
**KIVY_NO_ARGS:**如果設置,則在命令行傳遞的參數將不被解析,例如,你可以安全的使用你自己的不需要-分隔符的參數寫一個腳本或應用程序:
import os
os.environ['KIVY_NO_ARGS'] = "l"
import kivy
### 三、限制核心到特定實現
kivy.core在你的系統平臺中嘗試選擇最佳實現。為了測試或定制安裝,你也許想限制選擇一個特定的實現。
**KIVY_WINDOW:**創建一個窗口的實現,可選值為*sdl2,pygame,x11, egl_rpi*
**KIVY_TEXT:**渲染文本的實現,可選值為*sdl2, pil, pygame, sdlttf*
**KIVY_VIDEO:**渲染視頻的實現,可選值為*pygst, gstplayer, pyglet, ffpyplayer, null*
**KIVY_AUDIO:**播放音頻的實現,可選值為*sdl2, gstplayer, pygst, ffpyplayer, pygame*
**KIVY_IMAGE:**讀取圖像的實現,可選值為*sdl2, pil, pygame, imageio, tex, dds, gif*
**KIVY_CAMERA:**讀取攝像頭的實現,可選值為*videocapture, avfoundation, pygst, opencv*
**KIVY_SPELLING:**拼寫的實現,可選值為*enchant, osxappkit*
**KIVY_CLIPBOARD:**剪切板管理的實現,可選值為*sdl2, pygame, dummy, android*
#### 四、度量
##### V1.4.0版本加入
**KIVY_DPI:**如果設置,則單位使用Metrics.dpi
##### V1.5.0版本加入
**KIVY_METRICS_DENSITY:**如果設置,則單位使用Metrics.density
##### V1.5.0加入
**KIVY_METRICS_FONTSCALE:**如果設置,則單位使用Metrics.fontscale
#### 五、圖像
**KIVY_GLES_LIMITS:**是否GLES2限制被執行。如果設置為false,Kivy將不會真正的GLES2兼容。下面是一個當被設置為True時的潛在的不兼容列表
* Mesh indices(網格索引):如果為True,則一個網格里面的索引被限制到65535.
* Texture blit(材質位塊傳輸):當傳輸材質時,顏色和緩沖的數據格式必須同材質被創建時的格式相同。在桌面系統上,不同顏色間的轉換被驅動程序處理。在安卓系統上,大多數的設備會造成失敗。
##### V1.8.1版本加入
**KIVY_BCM_DISPMANX_ID:**改變默認的用來顯示Raspberry Pi,默認值為0,可選值如下:
        0: DISPMANX_ID_MAIN_LCD
        1: DISPMANX_ID_AUX_LCD
        2: DISPMANX_ID_HDMI
        3: DISPMANX_ID_SDTV
        4: DISPMANX_ID_FORCE_LCD
        5: DISPMANX_ID_FORCE_TV
        6: DISPMANX_ID_FORCE_OTHER
### 下節預告:編程向導4.3配置Kivy