【发布时间】:2017-03-23 21:26:37
【问题描述】:
我想安装python-praat-scripts 包。它说:
安装
你可以通过pip安装python-praat-scripts via:
pip install python-praat-scripts或通过下载此存储库并运行:
python setup.py install安装后,
praatinterface包将可以导入。
所以我就这么做了。然后它说:
对于基本用法,实例化一个 PraatLoader 对象如下:
``` from praatinterface import PraatLoader
pl = PraatLoader(praatpath = '/path/to/praat')
text = pl.run_script('formants.praat', '/path/to/wav/file', 5, 5500)
formants = pl.read_praat_out(text) ```
所以我写了以下内容:
from praatinterface import PraatLoader
praat_path = '/usr/bin/praat'
pl = PraatLoader(praatpath = praat_path)
for path in ae_paths:
text = pl.run_script('formants.praat', path, 5, 5500)
formants = pl.read_praat_out(text)
print(formants)
这里的ae_paths 是一个包含音频路径的列表。 praat路径是在终端写的找到的:
vladimir@vladimir:/usr/bin$ type praat
praat 是 /usr/bin/praat
但是我得到一个错误:
----------------------------------- ---------------------------- PermissionError Traceback(最近一次调用 最后)在() 2 3 praat_path = '/usr/bin/praat' ----> 4 pl = PraatLoader(praatpath = praat_path) 5 用于 ae_paths 中的路径: 6 text = pl.run_script('formants.praat', path, 5, 5500)
/home/vladimir/anaconda3/lib/python3.5/site-packages/praatinterface/Praat.py 在 init(self, **kwargs) 18 self.script_dir = os.path.join(os.path.dirname(file),'praatScripts') 19 self.praat = 'praat' ---> 20 self.init_scripts() 21 如果 self.debug: 22 self.initlog()
/home/vladimir/anaconda3/lib/python3.5/site-packages/praatinterface/Praat.py 在 init_scripts(self) 35 定义初始化脚本(自我): 36 如果不是 os.path.isdir(self.script_dir): ---> 37 os.mkdir(self.script_dir) 38 for s in self.scripts: 39 sfilename = s
PermissionError: [Errno 13] Permission denied: '/usr/bin/praatScripts'
【问题讨论】:
-
出于某种原因,praat 周围的 Python 包装器试图在 /usr/bin/praat 可执行文件旁边创建一个 praatScripts 目录(如果它不存在)。当然,这需要root权限。但总的来说,它根本不应该这样做;这只是不好的做法。我倾向于说:避免使用这个包。
-
或者,您可以尝试创建 virtualenv 并在其中工作,因为该环境将归您所有。但这是一种变通方法,而不是问题的真正解决方案。
-
也许你可以和作者讨论这个问题,问问他们的实际意图是什么。但是感觉很不系统,就像有一个目录 /usr/bin/praatScripts/ 。
-
@Evert 正在尝试this,但仍然出现其他类型的错误。
-
“其他类型的错误”显然是一个不同的(新)问题。