我正在尝试使用一个开源Python程序。我有一个Python脚本,与安装了所有预reqs的示例完全相同,但我似乎得到了某种全局Python错误:
Traceback (most recent call last):
File "/etc/asterisk/scripts/detect/gong/gonglearn.py", line 15, in <module>
from pyAudioAnalysis.audioTrainTest import extract_features_and_train
File "/root/pyAudioAnalysis/pyAudioAnalysis/audioTrainTest.py", line 9, in <module>
from pyAudioAnalysis import MidTermFeatures as aF
File "/root/pyAudioAnalysis/pyAudioAnalysis/MidTermFeatures.py", line 8, in <module>
from pyAudioAnalysis import audioBasicIO
File "/root/pyAudioAnalysis/pyAudioAnalysis/audioBasicIO.py", line 6, in <module>
import eyed3
File "/usr/local/lib/python2.7/dist-packages/eyed3/__init__.py", line 31, in <module>
from .utils.log import log # noqa: E402
File "/usr/local/lib/python2.7/dist-packages/eyed3/utils/__init__.py", line 361
msg = f"invalid level choice: {level} (choose from {parser.log_levels})"
SyntaxError: invalid syntax我去看了一下__init__.py的代码,发现:
def __call__(self, parser, namespace, values, option_string=None):
values = values.split(':')
level, logger = values if len(values) > 1 else (values[0],
self.main_logger)
logger = logging.getLogger(logger)
try:
logger.setLevel(logging._nameToLevel[level.upper()])
except KeyError:
msg = f"invalid level choice: {level} (choose from {parser.log_levels})"
raise argparse.ArgumentError(self, msg)
super(LoggingAction, self).__call__(parser, namespace, values, option_string)由于这似乎是系统代码,或与eyed3有关的内容,而不是特定于我试图运行的内容,所以我不太确定如何继续运行。我在任何地方都找不到关于如何调试这个特定错误的引用。
这究竟说明了什么问题?我通常能够自己解决语法错误,但在这种情况下,消息似乎有点神秘,我无法破译它。我尝试将其他各种东西导入到我的脚本中并执行import logging as log,但这些都没有起到任何作用。在使用Python之前,我是否必须以某种方式配置它?
如果这是一个奇怪的问题,我很抱歉,但它似乎相当模糊,而且我已经有一段时间没有使用Python了,这是在Windows上使用的。
我正在Debian 10上运行Python (而不是Python 3)。
发布于 2020-12-04 23:45:51
这里的问题在于回溯中所建议的行:
msg = f"invalid level choice: {level} (choose from {parser.log_levels})"这里的问题是,这一行是使用f-字符串,做字符串插值.这是一个问题的原因是直到python3.6才引入f-字符串。
不幸的是,因为这是来自eyed3的代码,所以您不能更改它。不过,你确实有几个选择:
如果您查看开始部分的eyeD3回购,它说:
Python3.6是必需的。
https://stackoverflow.com/questions/65152169
复制相似问题