为什么Python看不到我对代码所做的更改?

4

我正在尝试自定义httpdomain Sphinx文档扩展的解析器/词法分析器。按照文档中提到的方法,我将其安装在给定目录中,并将该目录添加到sys.path中。

然后我编译了Sphinx文档,http被正确地高亮显示。

现在,我需要对扩展进行一些小改动。我开始在扩展目录内的httpdomain.py文件中随机更改,结果正确地产生了无效语法错误。

接下来,我通过用HTTTP(多一个T)替换HTTP令牌来更改词法分析器。我的想法是看看现在是否可以突出显示包含HTTTP的条目而不是HTTP。

问题是,我所做的任何更改似乎都没有改变输出。HTTP继续被着色,HTTTP被忽略。

以下是包含我的更改的词法分析器部分:

tokens = {
    'root': [
        (r'(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|TRACE)( +)([^ ]+)( +)'
         r'(HTTTPS?)(/)(1\.[013])(\r?\n|$)',
         bygroups(Name.Function, Text, Name.Namespace, Text,
                  Keyword.Reserved, Operator, Number, Text),
         'headers'),
        (r'(HTTTPS?)(/)(1\.[013])( +)(\d{3})( +)([^\r\n]+)(\r?\n|$)',
         bygroups(Keyword.Reserved, Operator, Number, Text, Number,
                  Text, Name.Exception, Text),
         'headers'),

         (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
         (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
         (r'\r?\n', Text, 'content')
    ],
    'headers': [
        (r'([^\s:]+)( *)(:)( *)([^\r\n]+)(\r?\n|$)', header_callback),
        (r'([\t ]+)([^\r\n]+)(\r?\n|$)', continuous_header_callback),
        (r'\r?\n', Text, 'content')
    ],
    'content': [
        (r'.+', content_callback)
    ]
}

请注意,“HTTP”已更改为“HTTTP”,因此我希望现在包含HTTTP的文档条目被标记,但是没有任何更改。
我对文档文本进行了更改,并发现它们已更新到页面上,因此没有缓存问题。
我还删除了Python创建的名为 __pycache__的文件夹,结果没有更改。 我还尝试注释掉词法分析器中的所有令牌,结果也没有变化。 如果插入无效的语法,则会失败。 如果语法正确,则似乎使用未经修改的原始代码。
是否有其他缓存需要清除?
我对Python完全不熟悉,所以我有点迷失方向。
PS:这个HTTTP只是一个测试。 一旦我让它工作,我就会进行真正的更改。
2个回答

2

事实证明,代码更改已被看到,但是由于Pygments还注册了一个名为html的词法分析器,因此从未使用过该词法分析器。因此,我用我的替换了它:app.add_lexer('http', HTTPLexer()) ,然后我开始看到我的更改影响生成的文档。


-1
尝试删除 *.pyc 文件并重新启动您的扩展。

1
OP已经说过他删除了pycache,我认为他真正想删除的是__pycache__,它包含了Python-3.x中所有的*.pyc文件。 - Kritzefitz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接