Python 3.3.1 (win7) で奇妙な NameError が発生します。
コード:
import re
# ...
# Parse exclude patterns.
excluded_regexps = set(re.compile(regexp) for regexp in options.exclude_pattern)
# This is line 561:
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
エラー:
Traceback (most recent call last):
File "py3createtorrent.py", line 794, in <module>
sys.exit(main(sys.argv))
File "py3createtorrent.py", line 561, in main
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
File "py3createtorrent.py", line 561, in <genexpr>
excluded_regexps |= set(re.compile(regexp, re.I) for regexp in options.exclude_pattern_ci)
NameError: free variable 're' referenced before assignment in enclosing scope
エラーが発生する 561 行目は、上記のコードの2行目です。つまり、自由変数re
ではありません。これは単なる正規表現モジュールであり、最初の行で完全に参照できます。
への参照がre.I
問題を引き起こしているように思えますが、その方法がわかりません。