我在Eclipse中使用PyDev并为我的Python项目提供了一个自定义源路径: src / main / python /。该路径将添加到PythonPath。
现在,我想使用库pyMIR:https://github.com/jsawruk/pymir,它没有任何安装脚本。所以我下载了它并将它作为Pydev软件包包含在我的项目中,pyMIR的完整路径是: src / main / python / music / pymir 。
在音乐包( src / main / python / music )中,现在我想使用该库并通过以下方式导入它:from pymir import AudioFile
。没有出现错误,因此找到了类AudioFile。
之后,我想通过:AudioFile.open(path)
读取一个音频文件,然后我收到错误“导入的未定义变量:打开”。但是当我运行脚本时,它可以工作,不会发生错误。
此外,当我查看pyMIR包时,还有未解决的导入错误。例如:AudioFile类中的from pymir import Frame
产生错误:“Unresolved import:Frame”,当我将其更改为from music.pymir import Frame
时,错误消失,但是当它运行时出现错误:“type对象'Frame'没有属性'Frame'“。
我需要更改什么,另一个导入或如何包含Pydev包?
当我使用标准路径“src”创建一个新项目时,不会出现“未解决的impor”错误。 src / main / python 的区别在哪里?因为我将源文件夹的路径更改为 src / main / python 。
提前致谢。
答案 0 :(得分:1)
我尝试下载并安装pymir包。有一个项目结构适合我:
project/music/
project/music/pymir/
project/music/pymir/AudioFile
project/music/pymir/...
project/music/audio_files/01.wav
project/music/test.py
test.py:
import numpy
from pymir import AudioFile
filename = "audio_files/01.wav"
print "Opening File: " + filename
audiofile = AudioFile.open(filename)
frames = audiofile.frames(2048, numpy.hamming)
print len(frames)
如果我将'test.py'从'music'包中移出,我还没有办法让它工作。在我看来,项目结构敏感而棘手的原因是pymir包的结构不合理。例如,作者将模块名称设置为“Frame.py”,并在模块内部将类命名为“Frame”。然后在“__init__.py”中,代码类似于“来自帧导入帧”。在“AudioFile.py”中,代码是“来自pymir import Frame”。我真的认为当前pymir的命名和结构很混乱。建议您仔细使用此包
答案 1 :(得分:0)
在基本文件夹位置添加" __ init __。py" 空文件并且可以正常工作
答案 2 :(得分:0)
将文件夹pymir
解压缩到site-packages
,确保路径类似
site-packages\pymir
site-packages\pymir\AudioFile.py
site-packages\pymir\Frame.py
site-packages\pymir\...
评论文件__init__.py
#from AudioFile import AudioFile
#from Frame import Frame
#from Spectrum import Spectrum
测试
import numpy as np
import matplotlib.pyplot as plt
from pymir.AudioFile import AudioFile
filename = '../wavs/cxy_6s_mono_16KHz.wav'
audiofile = AudioFile.open(filename)
plt.plot(audiofile)
plt.show()
frames = audiofile.frames(2048, np.hamming)
print(len(frames))