当前位置: 首页 > 面试题库 >

如何在Python中临时修改sys.path?

雷逸仙
2023-03-14
问题内容

在我的Python测试脚本中,我多次使用此模式

sys.path.insert(0, "somedir")
mod =  __import__(mymod)
sys.path.pop(0)

有没有更简洁的方法来临时修改搜索路径?


问题答案:

您可以使用一个简单的上下文管理器:

import sys

class add_path():
    def __init__(self, path):
        self.path = path

    def __enter__(self):
        sys.path.insert(0, self.path)

    def __exit__(self, exc_type, exc_value, traceback):
        try:
            sys.path.remove(self.path)
        except ValueError:
            pass

然后要导入模块,您可以执行以下操作:

with add_path('/path/to/dir'):
    mod = __import__('mymodule')

with语句主体退出时,sys.path将恢复到原始状态。如果仅使用该块中的模块,则可能还希望从sys.modules以下位置删除其引用:

del sys.modules['mymodule']


 类似资料:
  • 问题内容: 我使用以下代码临时修改环境变量。 此上下文主要用于测试用例。例如, 我的问题:有没有简单/优雅的书写方式?我想过实际上做,然后..但我不知道是否会影响程序行为(例如:如果被 引用 在Python解释器在其他地方)。 问题答案:

  • 问题内容: 在Python中(通过日志记录模块)临时更改日志记录消息格式的最简单方法是什么? 目标是具有某种标准的消息格式,同时能够临时添加有关正在读取的某些文件的信息(如文件名);当不再读取文件时,消息格式应恢复为其默认值。产生该消息的程序 不 知道正在读取哪个文件,因此,如果其消息自动包含相关的文件名(错误消息将是:“ 读取文件 ***时出错:…”,而不是该消息),将是很好的选择。 “错误:…

  • 问题内容: 我正在尝试在python 2.7中编辑/修改现有的元数据。更具体而言,我在我的月历中有GPS坐标,但是海拔字段不正确。有办法改变吗? 我看过了 ,但似乎找不到修改现有字段的方法。 有没有人设法做到这一点?听起来这很简单,但我似乎无法解决。 干杯戴夫 问题答案: (550,1)%某些值以小数格式保存。这意味着550m(51,2)将为25.5m。 将高度设置为140m

  • 问题内容: 我有一个XML文档,在它已经包含数据之后,我想对其进行更新。 我考虑过要在(附加)模式下打开XML文件。问题在于新数据将在根结束标记之后写入。 如何删除文件的最后一行,然后从该点开始写入数据,然后关闭根标签? 当然,我可以读取整个文件并进行一些字符串操作,但是我认为这不是最好的主意。 谢谢你的时间。 问题答案: 您绝对 不应该做 的快速简便的方法(请参阅下文)是使用来将整个文件读入字符

  • 本文向大家介绍python如何修改文件时间属性,包括了python如何修改文件时间属性的使用技巧和注意事项,需要的朋友参考一下 1、获取文件的创建、修改、访问时间  2、更改文件的修改、访问时间(创建时间没查到怎么修改,暂时不记录)  3、放在同一个py方便直接复制使用  4、补充修改文件的创建时间 以上就是python如何修改文件时间属性的详细内容,更多关于python修改文件时间属性的资料请关

  • 问题内容: 我正在尝试将我的项目目录添加到GOPATH,在Linux中,我可以这样做 在〜/ .bashrc中 Powershell中的等效性是什么 问题答案: 这应该遵循您使用Powershell设置任何Environment变量的方式(如本文所述): 如果您希望它永久存在(即将来将适用于任何外壳程序): 需要注意的一件事:当我们用来创建新的用户或计算机级环境变量时,在Windows Power