【问题标题】:Reloading a package from a global python script从全局 python 脚本重新加载包
【发布时间】: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


【解决方案1】:

sys 将被重新加载。我建议将条件更改为更频繁发生的情况,放入print 语句或两个,看看它是否重新加载。

【讨论】:

  • 您能否提供一些参考资料,以提供有关 reload 特定于我的案例的更多信息,我在网上搜索了有关 reload 的信息,但找不到在不同脚本中使用它的任何内容。
猜你喜欢
  • 2012-04-08
  • 2017-04-14
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多