【发布时间】:2013-11-24 00:45:27
【问题描述】:
在我们的代码库中,我们将ASCII 作为默认编码,我们需要将其更改为UTF-8,因此在每个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 包用于将RIGHTIMPORT 插入PATH,因此在从Globals 导入所有包之前导入它。
我的问题是在执行from Globals import * 之后sys 是否会重新加载?我实际上无法确认它,因为系统工作正常,并且由于ASCII 编码而失败的情况很少发生。
谢谢
【问题讨论】:
-
不需要启动子进程来收集环境变量。
os.environ是一个包含环境变量集的字典。
标签: python python-2.6