【问题标题】:Loading modules that change sys.path加载改变 sys.path 的模块
【发布时间】:2013-07-30 02:33:49
【问题描述】:

假设在 Python 中我加载了一个更改 sys.path 的模块。这也会改变装载机的sys.path 吗?如果是这样,有什么方法可以确保我以后可以恢复它?

相反的情况呢?假设 loader 在加载模块之前对sys.path 进行了更改。模块会看到常规的sys.path(即PYTHONPATH 等),还是会看到新的sys.path

【问题讨论】:

  • 我对这个问题的答案很感兴趣。你有没有运行任何代码来测试这个?

标签: python


【解决方案1】:

是的,它会在任何地方影响sys.path....您可以保存它并在以后恢复它

import sys
_opath = sys.path[:] #get a copy of whatever sys.path is at this point

#do imports

sys.path = _opath

您也许可以将其转换为元组而不是列表...取决于它们如何添加到可能有效的路径中,但如果它们正在更改路径,它可能会破坏您导入的某些模块

你也可以访问

os.environ["PYTHONPATH"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2014-06-27
    • 2021-11-10
    • 2014-04-05
    相关资源
    最近更新 更多