PyDev: Importación sin resolver

Utilizo PyDev en Eclipse y tengo una ruta de origen personalizada para mi proyecto Python: src / main / python /. La ruta se agrega a PythonPath.

Ahora, quiero usar la biblioteca pyMIR: https://github.com/jsawruk/pymir , que no tiene ningún script de instalación. Así que lo descargué y lo incluí directamente en mi proyecto como un paquete Pydev, la ruta completa al PyMIR es: src / main / python / music / pymir .

En el paquete de música ( src / main / python / music ), ahora quiero usar la biblioteca e importarla a través de: from pymir import AudioFile . No aparece ningún error, por lo que se encuentra la clase AudioFile.

Luego, quiero leer un archivo de audio a través de: AudioFile.open(path) y allí aparece el error “Variable no definida de importación: abrir”. Pero cuando ejecuto el script, funciona, no se produce ningún error.

Además, cuando busco en el paquete pyMIR, también hay errores de importación sin resolver. Por ejemplo: from pymir import Frame en la clase AudioFile produce el error: “Importar sin resolver: Frame”, cuando lo cambio from music.pymir import Frame , el error desaparece, pero luego from music.pymir import Frame un error cuando se ejecuta: “type el objeto ‘Frame’ no tiene atributo ‘Frame’ “.

  1. ¿Qué tengo que cambiar, otra importación o cómo incluir un paquete Pydev?

  2. Cuando hago un nuevo proyecto con una ruta estándar “src”, no aparece ningún error “import no resuelto”. ¿Dónde está la diferencia a src / main / python ? Porque cambié la ruta de las carpetas de origen a src / main / python .

Gracias por adelantado.

Intenté descargar e instalar el paquete pymir. Hay una estructura de proyecto que funciona para mí:

 project/music/ project/music/pymir/ project/music/pymir/AudioFile project/music/pymir/... project/music/audio_files/01.wav project/music/test.py 

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

Si moví ‘test.py’ del paquete ‘music’, no he encontrado la manera de hacerlo funcionar. La razón por la que la estructura del proyecto es delicada y delicada es, en mi opinión, el paquete pymir no está bien estructurado. Por ejemplo, el autor estableció el nombre del módulo como “Frame.py” y dentro del módulo una clase se llama “Frame”. Luego, en “__init__.py”, los códigos son como “desde Frame import Frame”. Y en “AudioFile.py”, los códigos son “de pymir import Frame”. Realmente creo que el nombramiento y la estructura del pymir actual es complicado. Te sugiero que uses este paquete con cuidado

agregue “__init__.py” archivo vacío en la ubicación de la carpeta base y funciona

  1. descomprima la carpeta pymir a site-packages , asegúrese de que la ruta sea como

     site-packages\pymir site-packages\pymir\AudioFile.py site-packages\pymir\Frame.py site-packages\pymir\... 
  2. comenta el contenido del archivo __init__.py

     #from AudioFile import AudioFile #from Frame import Frame #from Spectrum import Spectrum 
  3. Pruébalo

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