Résoudre les problèmes d'erreur et de compatibilité de version de pip installation librosa, numba, llvmlite dans l'environnement hors ligne

Scénario de projet :

Le projet doit déployer un projet Python d'apprentissage en profondeur sur GitHub lié au traitement audio et vidéo dans un environnement non Internet. Par conséquent, de nombreux packages doivent être téléchargés et installés dans l'environnement intranet après le téléchargement du package wheel ou du package tar.

Ce processus a rencontré de nombreuses erreurs causées par des problèmes de compatibilité. Une erreur est signalée pour la compatibilité entre la version Python et les versions librosa, numba et llvmlite, une erreur est signalée pour le système qui n'a pas installé ffmpeg et une erreur est signalée lors de l'installation de ffmpeg.

Le projet GitHub est basé sur Python3.6 et les exigences d'environnement sont les suivantes :

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

Le système doit installer ffmpeg :
sudo apt-get install ffmpeg

(Remarque : si le réseau externe remplit les conditions, il est plus pratique de créer une image Docker que d'installer les packages un par un hors ligne)


Description du problème

J'ai essayé de faire correspondre de nombreuses versions, parmi lesquelles les versions numba et llvmlite sont relativement dépendantes, essentiellement une correspondance un à un, et de nombreux packages ont été mis en correspondance au cours du processus d'essai, ce qui est un processus difficile.
paquets
Ensuite, nous présenterons les problèmes d'erreur et les solutions rencontrées un par un.


Résoudre l'erreur ModuleNotFoundError : Aucun module nommé 'numba.decorators'

Installez une version supérieure de numba, telle que la version 0.57.0 de numba, et l'erreur ci-dessus apparaîtra. Après avoir désinstallé numba, installez et spécifiez numba comme version 0.48.0. Notez que la version llvmlite correspondante est 0.31.0 (installer numba's Il demandera Collecting llvmlite<0.32.0,>=0.31.0dev0 (from numba==0.48.0)
).

Solution 1 : Installez numba version 0.48.0

pip uninstall numba
pip install numba==0.48.0

Cette solution s'applique à Python 3.6, 3.7 et 3.8.
Si la version spécifiée n'existe pas, l'erreur suivante sera signalée :

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

Solution 2 : modifiez le fichier decorators.py dans la bibliothèque librosa et commentez les parties pertinentes.

Lors de l'utilisation de Python3.10, la version téléchargée de librosa est 0.7.2, la version de numba est 0.57.0 et la version correspondante de llvmlite est 0.40.0. À ce stade, la version du package de dépendances correspondant à librosa est comme suit:

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)

Pour l'emplacement de librosa, vous pouvez pip install librosaafficher l'emplacement via
Mon emplacement d'installation est :

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

Ouvrez /usr/local/lib/python3.10/dist-packages/librosa/util/decorators.py
et commentez les parties suivantes

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 vous l'exécutez à nouveau, il n'y aura pas d'erreur comme ci-dessus. Référence :
Aucun module nommé résolution d'erreur numba.decorators


解决Python报错AttributeError : le module 'llvmlite.binding.ffi' n'a pas d'attribut 'register_lock_callback'

Ce type d'erreur se produit lorsque Python3.7 exécute le programme, et lorsqu'il est exécuté, import numbail signale une erreur : AttributeError : le module 'llvmlite.binding.ffi' n'a pas d'attribut 'register_lock_callback', car la version de llvmlite est inférieure à 0.36 .0,

Solution 1 : installez llvmlite version 0.36.0 ou ultérieure.

Voici les versions de package d'installation réalisables pour Python3.7 :

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

Dans cette solution, la version numba n'est pas 0.48.0 et d'autres problèmes peuvent survenir.
Référence : erreur d'exécution de python AttributeError : le module 'llvmlite.binding.ffi' n'a pas d'attribut 'register_lock_callback'

Solution 2 : emprunter le dossier de liaison dans la version 0.36.0 de llvmlite

Lorsque vous souhaitez utiliser la version 0.48.0 de numba et que la version 0.31.0 correspondante de llvmlite n'a pas llvmlite.binding.ffi, vous pouvez d'abord installer la version 0.36.0 de llvmlite et trouver llvmlite dans vos packages de site path Folder, copiez le dossier de liaison à l'intérieur, désinstallez llvmlite version 0.36.0, réinstallez llvmlite version 0.31.0 et placez le dossier de liaison ci-dessus dans le dossier llvmlite.
(Cette méthode se retrouve dans l'expérience, simple et grossière, peu recommandée)


Résoudre le problème de l'erreur d'importation librosa

Il se peut que la version soit trop basse. Par exemple, la version de librosa est 0.6.0. Il est recommandé d'installer librosa de version 0.7.0 ou supérieure. Pour installer librosa, vous devez d'abord installer llvmlite, puis numba, puis librosa.


Résoudre l'erreur TypeError : guvectorize() manquant 1 argument positionnel requis : 'signature'

Cette erreur est due à l'absence de module resampy, mais en fait resampy 0.4.2 a été installé, vous devez spécifier resampy version 0.3.1 pour résoudre l'erreur.

pip install resampy==0.3.1

Je suppose que tu aimes

Origine blog.csdn.net/qq_39691492/article/details/130829401
conseillé
Classement