簡體   English   中英

PyDev:未解決的導入

[英]PyDev: Unresolved import

我在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 AudioFilefrom pymir import AudioFile 沒有出現錯誤,因此找到了AudioFile類。

之后,我想通過以下方式讀取音頻文件: AudioFile.open(path)然后出現錯誤“來自導入的未定義變量:打開”。 但是,當我運行腳本時,它可以工作,不會發生任何錯誤。

此外,當我查看pyMIR軟件包時,還存在未解決的導入錯誤。 例如: from pymir import Frame ,類AudioFile中的from pymir import Frame產生錯誤:“ Unresolved import:Frame”,當我將其更改為from music.pymir import Frame ,該錯誤消失,但是當它運行時我得到一個錯誤:“ type對象“框架”沒有屬性“框架””。

  1. 我必須更改什么,再次導入或如何包含Pydev軟件包?

  2. 當我使用標准路徑“ src”創建一個新項目時,則不會出現“未解決的重要問題”錯誤。 src / main / python的區別在哪里? 因為我將源文件夾的路徑更改為src / main / python

提前致謝。

我試圖下載並安裝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”從“音樂”包中移出,我還沒有找到一種使之工作的方法。 在我看來,項目結構之所以敏感且棘手,是因為pymir軟件包的結構不夠好。 例如,作者將模塊名稱設置為“ Frame.py”,並且在模塊內部將一個類命名為“ Frame”。 然后在“ __init__.py”中,代碼​​類似於“從框架導入框架”。 在“ AudioFile.py”中,代碼​​是“來自pymir import Frame”。 我真的認為當前pymir的命名和結構很混亂。 建議您謹慎使用此軟件包

在基本文件夾位置添加“ __init__.py”空文件,即可正常工作

  1. pymir文件夾解壓縮到site-packages ,確保路徑類似於

     site-packages\\pymir site-packages\\pymir\\AudioFile.py site-packages\\pymir\\Frame.py site-packages\\pymir\\... 
  2. 注釋文件__init__.py的內容

     #from AudioFile import AudioFile #from Frame import Frame #from Spectrum import Spectrum 
  3. 測試一下

     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)) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM