Resuelva los problemas de compatibilidad de versiones y errores de la instalación de pip librosa, numba, llvmlite en el entorno fuera de línea

Escenario del proyecto:

El proyecto necesita implementar un proyecto Python de aprendizaje profundo en GitHub relacionado con el procesamiento de audio y video en un entorno donde la intranet no está conectada a Internet, por lo que es necesario descargar e instalar muchos paquetes en el entorno de la intranet después del paquete de rueda o tar. se descarga el paquete.

Este proceso encontró muchos errores causados ​​por problemas de compatibilidad. Se reporta un error de compatibilidad entre la versión Python y las versiones librosa, numba y llvmlite, se reporta un error para el sistema que no tiene instalado ffmpeg y se reporta un error durante la instalación de ffmpeg.

El proyecto de GitHub se basa en Python3.6 y los requisitos del entorno son los siguientes:

librosa==0.7.0
numpy==1.17.1
opencv-contrib-python>=4.2.0.34
opencv-python==4.1.0.25
torch==1.1.0
torchvision==0.3.0
tqdm==4.45.0
numba==0.48

El sistema necesita instalar ffmpeg:
sudo apt-get install ffmpeg

(Nota: si la red externa tiene las condiciones, es más conveniente crear una imagen de Docker que instalar paquetes uno por uno sin conexión)


Descripción del problema

He intentado hacer coincidir muchas versiones. Entre ellas, las versiones numba y llvmlite tienen fuertes dependencias, básicamente una correspondencia uno a uno. Durante el proceso de prueba, muchos paquetes coincidieron y el proceso fue difícil.
paquetes
A continuación, presentaremos los problemas de error y las soluciones encontradas uno por uno.


Resuelve el error ModuleNotFoundError: No hay ningún módulo llamado 'numba.decorators'

Instale una versión superior de numba, como la versión 0.57.0, y aparecerá el error anterior. Después de desinstalar numba, instale y especifique numba como la versión 0.48.0. Tenga en cuenta que la versión llvmlite correspondiente es 0.31.0 (instale numba). solicitud Recopilación de llvmlite<0.32.0,>=0.31.0dev0 (de numba==0.48.0)
).

Solución 1: Instalar numba versión 0.48.0

pip uninstall numba
pip install numba==0.48.0

Esta solución es aplicable a Python 3.6, 3.7 y 3.8.Si
la versión especificada no existe, se informará el siguiente error:

ERROR: Ignored the following versions that require a different python version: 0.52.0 Requires-Python >=3.6,<3.9; 0.52.0rc3 Requires-Python >=3.6,<3.9; 0.53.0 Requires-Python >=3.6,<3.10; 0.53.0rc1.post1 Requires-Python >=3.6,<3.10; 0.53.0rc2 Requires-Python >=3.6,<3.10; 0.53.0rc3 Requires-Python >=3.6,<3.10; 0.53.1 Requires-Python >=3.6,<3.10; 0.54.0 Requires-Python >=3.7,<3.10; 0.54.0rc2 Requires-Python >=3.7,<3.10; 0.54.0rc3 Requires-Python >=3.7,<3.10; 0.54.1 Requires-Python >=3.7,<3.10
ERROR: Could not find a version that satisfies the requirement numba==0.53.0 (from versions: 0.1, 0.2, 0.3, 0.5.0, 0.6.0, 0.7.0, 0.7.1, 0.7.2, 0.8.0, 0.8.1, 0.9.0, 0.10.0, 0.10.1, 0.11.0, 0.12.0, 0.12.1, 0.12.2, 0.13.0, 0.13.2, 0.13.3, 0.13.4, 0.14.0, 0.15.1, 0.16.0, 0.17.0, 0.18.1, 0.18.2, 0.19.1, 0.19.2, 0.20.0, 0.21.0, 0.22.0, 0.22.1, 0.23.0, 0.23.1, 0.24.0, 0.25.0, 0.26.0, 0.27.0, 0.28.1, 0.29.0, 0.30.0, 0.30.1, 0.31.0, 0.32.0, 0.33.0, 0.34.0, 0.35.0, 0.36.1, 0.36.2, 0.37.0, 0.38.0, 0.38.1, 0.39.0, 0.40.0, 0.40.1, 0.41.0, 0.42.0, 0.42.1, 0.43.0, 0.43.1, 0.44.0, 0.44.1, 0.45.0, 0.45.1, 0.46.0, 0.47.0, 0.48.0, 0.49.0, 0.49.1rc1, 0.49.1, 0.50.0rc1, 0.50.0, 0.50.1, 0.51.0rc1, 0.51.0, 0.51.1, 0.51.2, 0.52.0rc2, 0.55.0rc1, 0.55.0, 0.55.1, 0.55.2, 0.56.0rc1, 0.56.0, 0.56.2, 0.56.3, 0.56.4, 0.57.0rc1, 0.57.0)
ERROR: No matching distribution found for numba==0.53.0

Solución 2: Modifique el archivo decorators.py en la biblioteca librosa y comente las partes relevantes.

Al usar Python3.10, la versión descargada de librosa es 0.7.2, la versión de numba es 0.57.0 y la versión correspondiente de llvmlite es 0.40.0 En este momento, la versión del paquete de dependencia correspondiente a librosa es como sigue:

Requirement already satisfied: librosa in /usr/local/lib/python3.10/dist-packages (0.7.2)
Requirement already satisfied: audioread>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (3.0.0)
Requirement already satisfied: decorator>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (5.1.1)
Requirement already satisfied: joblib>=0.12 in /usr/local/lib/python3.10/dist-packages (from librosa) (1.2.0)
Requirement already satisfied: numba>=0.43.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (0.57.0)
Requirement already satisfied: numpy>=1.15.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (1.24.3)
Requirement already satisfied: resampy>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from librosa) (0.4.2)
Requirement already satisfied: scikit-learn!=0.19.0,>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (1.2.2)
Requirement already satisfied: scipy>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from librosa) (1.10.1)
Requirement already satisfied: six>=1.3 in /usr/local/lib/python3.10/dist-packages (from librosa) (1.16.0)
Requirement already satisfied: soundfile>=0.9.0 in /usr/lib/python3/dist-packages (from librosa) (0.10.3.post1)
Requirement already satisfied: llvmlite<0.41,>=0.40.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.43.0->librosa) (0.40.0)
Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn!=0.19.0,>=0.14.0->librosa) (3.1.0)

Para la ubicación de librosa, puede pip install librosaver la ubicación a través de
Mi ubicación de instalación es:

/usr/local/lib/python3.10/dist-packages

Abra /usr/local/lib/python3.10/dist-packages/librosa/util/decorators.py
y comente las siguientes partes

import warnings
from decorator import decorator
import six
# 下面一行注释掉
# from numba.decorators import jit as optional_jit

# 下面一行去掉optional_jit
#__all__ = ['moved', 'deprecated', 'optional_jit']
__all__ = ['moved', 'deprecated']

Si lo ejecuta de nuevo, no habrá ningún error como el anterior. Referencia:
Ningún módulo llamado resolución de error numba.decorators


解决Python报错AttributeError: el módulo 'llvmlite.binding.ffi' no tiene el atributo 'register_lock_callback'

Este tipo de error ocurre cuando Python3.7 ejecuta el programa, y ​​cuando se ejecuta, import numbainforma un error: AttributeError: el módulo 'llvmlite.binding.ffi' no tiene el atributo 'register_lock_callback', porque la versión de llvmlite es inferior a 0.36 .0,

Solución 1: Instale la versión 0.36.0 o posterior de llvmlite.

Las siguientes son versiones factibles del paquete de instalación para Python3.7:

librosa==0.7.0
numba==0.53.0
llvmlite==0.36.0

En esta solución, la versión numba no es 0.48.0 y pueden ocurrir otros problemas.
Referencia: ejecute el error de Python AttributeError: el módulo 'llvmlite.binding.ffi' no tiene el atributo 'register_lock_callback'

Solución 2: Tome prestada la carpeta de enlace en la versión 0.36.0 de llvmlite

Cuando desee utilizar la versión 0.48.0 de numba, y la versión correspondiente de llvmlite 0.31.0 no tiene llvmlite.binding.ffi, primero puede instalar la versión 0.36.0 de llvmlite y buscar llvmlite en los paquetes de su sitio. ruta Carpeta, copie la carpeta de enlace dentro, desinstale llvmlite versión 0.36.0, vuelva a instalar llvmlite versión 0.31.0 y coloque la carpeta de enlace anterior en la carpeta llvmlite.
(Este método se encuentra en el experimento, simple y rudo, no muy recomendable)


Solucionar el problema de error de import librosa

Puede ser que la versión sea demasiado baja, por ejemplo, la versión de librosa es 0.6.0, se recomienda instalar librosa de la versión 0.7.0 o superior. Para instalar librosa, primero debe instalar llvmlite, luego numba y luego librosa.


Resuelva el error TypeError: guvectorize() falta 1 argumento posicional requerido: 'firma'

Este error se debe a la falta del módulo resampy, pero en realidad se ha instalado resampy 0.4.2, debe especificar la versión 0.3.1 de resampy para solucionar el error.

pip install resampy==0.3.1

Supongo que te gusta

Origin blog.csdn.net/qq_39691492/article/details/130829401
Recomendado
Clasificación