web-dev-qa-db-fra.com

Utilisation de moviepy, scipy et numpy dans Amazon lambda

Je voudrais générer une vidéo en utilisant AWS Lambda fonctionnalité.

J'ai suivi les instructions trouvées ici et ici .

Et j’ai maintenant le processus suivant pour construire ma fonction Lambda:

Étape 1

Tirez un Amazon Linux EC2 instance et lancez-le en tant que root:

#! /usr/bin/env bash

# Install the SciPy stack on Amazon Linux and prepare it for AWS Lambda

yum -y update
yum -y groupinstall "Development Tools"
yum -y install blas --enablerepo=epel
yum -y install lapack --enablerepo=epel
yum -y install atlas-sse3-devel --enablerepo=epel
yum -y install Cython --enablerepo=epel
yum -y install python27
yum -y install python27-numpy.x86_64
yum -y install python27-numpy-f2py.x86_64
yum -y install python27-scipy.x86_64

/usr/local/bin/pip install --upgrade pip
mkdir -p /home/ec2-user/stack
/usr/local/bin/pip install moviepy -t /home/ec2-user/stack

cp -R /usr/lib64/python2.7/dist-packages/numpy /home/ec2-user/stack/numpy
cp -R /usr/lib64/python2.7/dist-packages/scipy /home/ec2-user/stack/scipy

tar -czvf stack.tgz /home/ec2-user/stack/*

Étape 2

Je scp la archive résultante à mon ordinateur portable. Et puis exécutez ce script pour construire une archive Zip.

#! /usr/bin/env bash

mkdir tmp
rm lambda.Zip
tar -xzf stack.tgz -C tmp

Zip -9 lambda.Zip process_movie.py
Zip -r9 lambda.Zip *.ttf
cd tmp/home/ec2-user/stack/
Zip -r9 ../../../../lambda.Zip *

process_movie.py script est pour le moment seulement un test pour voir si la pile est ok:

def make_movie(event, context):
    import os
    print(os.listdir('.'))
    print(os.listdir('numpy'))
    try:
        import scipy
    except ImportError:
        print('can not import scipy')

    try:
        import numpy
    except ImportError:
        print('can not import numpy')

    try:
        import moviepy
    except ImportError:
        print('can not import moviepy')

Étape 3

Ensuite, je télécharge l’archive résultante sur S3 pour qu’elle soit la source de ma fonction lambda. Lorsque je teste la fonction, j'obtiens ce qui suit callstack:

START RequestId: 36c62b93-b94f-11e5-9da7-83f24fc4b7ca Version: $LATEST
['tqdm', 'imageio-1.4.Egg-info', 'decorator.pyc', 'process_movie.py', 'decorator-4.0.6.dist-info', 'imageio', 'moviepy', 'tqdm-3.4.0.dist-info', 'scipy', 'numpy', 'OpenSans-Regular.ttf', 'decorator.py', 'moviepy-0.2.2.11.Egg-info']
['add_newdocs.pyo', 'numarray', '__init__.py', '__config__.pyc', '_import_tools.py', 'setup.pyo', '_import_tools.pyc', 'doc', 'setupscons.py', '__init__.pyc', 'setup.py', 'version.py', 'add_newdocs.py', 'random', 'dual.pyo', 'version.pyo', 'ctypeslib.pyc', 'version.pyc', 'testing', 'dual.pyc', 'polynomial', '__config__.pyo', 'f2py', 'core', 'linalg', 'distutils', 'matlib.pyo', 'tests', 'matlib.pyc', 'setupscons.pyc', 'setup.pyc', 'ctypeslib.py', 'numpy', '__config__.py', 'matrixlib', 'dual.py', 'lib', 'ma', '_import_tools.pyo', 'ctypeslib.pyo', 'add_newdocs.pyc', 'fft', 'matlib.py', 'setupscons.pyo', '__init__.pyo', 'oldnumeric', 'compat']
can not import scipy
'module' object has no attribute 'core': AttributeError
Traceback (most recent call last):
  File "/var/task/process_movie.py", line 91, in make_movie
    import numpy
  File "/var/task/numpy/__init__.py", line 122, in <module>
    from numpy.__config__ import show as show_config
  File "/var/task/numpy/numpy/__init__.py", line 137, in <module>
    import add_newdocs
  File "/var/task/numpy/numpy/add_newdocs.py", line 9, in <module>
    from numpy.lib import add_newdoc
  File "/var/task/numpy/lib/__init__.py", line 13, in <module>
    from polynomial import *
  File "/var/task/numpy/lib/polynomial.py", line 11, in <module>
    import numpy.core.numeric as NX
AttributeError: 'module' object has no attribute 'core'

END RequestId: 36c62b93-b94f-11e5-9da7-83f24fc4b7ca
REPORT RequestId: 36c62b93-b94f-11e5-9da7-83f24fc4b7ca  Duration: 112.49 ms Billed Duration: 200 ms     Memory Size: 1536 MB    Max Memory Used: 14 MB

Je ne comprends pas pourquoi python ne trouve pas le répertoire principal présent dans la structure des dossiers.

MODIFIER:

Suivant les conseils de @jarmod, j'ai réduit la fonction lambda à:

def make_movie(event, context):
    print('running make movie')
    import numpy

J'ai maintenant l'erreur suivante:

START RequestId: 6abd7ef6-b9de-11e5-8aee-918ac0a06113 Version: $LATEST
running make movie
Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python intepreter from there.: ImportError
Traceback (most recent call last):
  File "/var/task/process_movie.py", line 3, in make_movie
    import numpy
  File "/var/task/numpy/__init__.py", line 127, in <module>
    raise ImportError(msg)
ImportError: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python intepreter from there.

END RequestId: 6abd7ef6-b9de-11e5-8aee-918ac0a06113
REPORT RequestId: 6abd7ef6-b9de-11e5-8aee-918ac0a06113  Duration: 105.95 ms Billed Duration: 200 ms     Memory Size: 1536 MB    Max Memory Used: 14 MB
63
rouk1

À l'aide de tous les messages de ce fil de discussion, voici une solution pour les enregistrements:

Pour que cela fonctionne, vous devez:

  1. commencer un EC2 instance avec au moins 2GO RAM (pour pouvoir compiler NumPy et SciPy.)

  2. Installer les dépendances nécessaires

    Sudo yum -y update
    Sudo yum -y upgrade
    Sudo yum -y groupinstall "Development Tools"
    Sudo yum -y install blas --enablerepo=epel
    Sudo yum -y install lapack --enablerepo=epel
    Sudo yum -y install Cython --enablerepo=epel
    Sudo yum install python27-devel python27-pip gcc
    virtualenv ~/env
    source ~/env/bin/activate
    pip install scipy
    pip install numpy
    pip install moviepy
    
  3. Copiez sur votre machine locale tout le contenu des répertoires (à l'exception de _markerlib, pip *, pkg_resources, setuptools * et easyinstall *) dans un dossier stack:

    • home/ec2-user/env/lib/python2.7/dist-packages
    • home/ec2-user/env/lib64/python2.7/dist-packages
  4. obtenir toutes les bibliothèques partagées requises de votre part EC2exemple:

    • libatlas.so.3
    • libf77blas.so.3
    • liblapack.so.3
    • libptf77blas.so.3
    • libcblas.so.3
    • libgfortran.so.3
    • libptcblas.so.3
    • libquadmath.so.0
  5. Placez-les dans un sous-dossier lib du dossier stack

  6. imageio est une dépendance de moviepy, vous devrez télécharger une version binaire de ses dépendances: libfreeimage et de ffmpeg; ils peuvent être trouvés ici . Placez-les à la racine de votre dossier de pile et renommez libfreeimage-3.16.0-linux64.soà libfreeimage.so

  7. Vous devriez maintenant avoir un dossier stack contenant:

    • toutes les dépendances python à la racine
    • toutes les bibliothèques partagées dans un sous-dossier lib
    • ffmpeg binaire à la racine
    • libfreeimage.so à la racine
  8. Zip ce dossier: Zip -r9 stack.Zip . -x ".*" -x "*/.*"

  9. Utilisez le suivant lambda_function.py comme point d’entrée pour votre lambda

    from __future__ import print_function
    
    import os
    import subprocess
    
    SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
    LIB_DIR = os.path.join(SCRIPT_DIR, 'lib')
    FFMPEG_BINARY = os.path.join(SCRIPT_DIR, 'ffmpeg')
    
    
    def lambda_handler(event, context):
        command = 'LD_LIBRARY_PATH={} IMAGEIO_FFMPEG_EXE={} python movie_maker.py'.format(
            LIB_DIR,
            FFMPEG_BINARY,
        )
        try:
            output = subprocess.check_output(command, Shell=True)
            print(output)
        except subprocess.CalledProcessError as e:
            print(e.output)
    
  10. écrire un movie_maker.pyscript qui dépend de moviepy, numpy, ...

  11. ajoutez-les au script dans votre fichier stack.Zip Zip -r9 lambda.Zip *.py

  12. télécharger le zip sur S3 et utilisez-le comme source pour votre lambda

Vous pouvez également télécharger le stack.Zipici .

27
rouk1

Je suivais également votre premier lien et je réussissais à importer numpy et pandas dans une fonction Lambda de cette manière (sous Windows):

  1. Démarrage d'un (niveau libre) t2.micro instance EC2 avec Amazon Linux AMI 2015.09.1 ​​64 bits et utilisation de PuTTY. à SSH dans.
  2. Essayé les mêmes commandes que vous avez utilisées et celles recommandées par l'article d'Amazon:

    Sudo yum -y update
    Sudo yum -y upgrade
    Sudo yum -y groupinstall "Development Tools"
    Sudo yum -y install blas --enablerepo=epel
    Sudo yum -y install lapack --enablerepo=epel
    Sudo yum -y install Cython --enablerepo=epel
    Sudo yum install python27-devel python27-pip gcc
    
  3. Création de l'environnement virtuel :

    virtualenv ~/env
    source ~/env/bin/activate
    
  4. Installé les paquets :

    Sudo ~/env/bin/pip2.7 install numpy
    Sudo ~/env/bin/pip2.7 install pandas
    
  5. Puis, avec WinSCP, je me suis connecté et j'ai tout téléchargé (sauf _markerlib, pip *, pkg_resources, setuptools * et easyinstall *) à partir de /home/ec2-user/env/lib/python2.7/dist-packages, et tout de /home/ec2-user/env/lib64/python2.7/site-packages de l'instance EC2.

  6. J'ai mis tous ces dossiers et fichiers dans un Zip , avec le fichier .py contenant la fonction Lambda. illustration de tous les fichiers copiés

  7. Étant donné que ce fichier .Zip est supérieur à 10 Mo, j'ai créé un compartiment S3 pour stocker le fichier. J'ai copié le lien du fichier à partir de là et collé à "Télécharger un fichier .Zip à partir d'Amazon S3" à la fonction Lambda.

  8. L'instance EC2 peut être fermée , ce n'est plus nécessaire.

Avec cela, je pourrais importer du Numpy et des pandas. Je ne connais pas moviepy, mais scipy est peut-être déjà compliqué, car Lambda a une limite pour une taille de package de déploiement décompressée de 262 144 000 octets. J'ai bien peur que Numpy et Scipy ne se soient déjà plus calmés.

56
Attila Tanyi

Les articles ici m'aident à trouver un moyen de compiler statiquement NumPy avec des fichiers de bibliothèque pouvant être inclus dans le package AWS Lambda Deployment. Cette solution ne dépend pas de la valeur LD_LIBRARY_PATH comme dans la solution @ rouk1.

La bibliothèque NumPy compilée peut être téléchargée de https://github.com/vitolimandibhrata/aws-lambda-numpy

Voici les étapes à suivre pour compiler NumPy

Instructions sur la compilation de ce paquet à partir de zéro

Préparez une nouvelle instance AWS EC avec AWS Linux.

Installer les dépendances du compilateur

Sudo yum -y install python-devel
Sudo yum -y install gcc-c++
Sudo yum -y install gcc-gfortran
Sudo yum -y install libgfortran

Installer les dépendances NumPy

Sudo yum -y install blas
Sudo yum -y install lapack
Sudo yum -y install atlas-sse3-devel

Créez/var/task/lib pour contenir les bibliothèques d'exécution

mkdir -p /var/task/lib

/ var/task est le répertoire racine où votre code résidera dans AWS Lambda. Nous devons donc lier statiquement les fichiers de bibliothèque requis dans un dossier bien connu qui, dans ce cas,/var/task/lib

Copiez les fichiers de bibliothèque suivants dans le répertoire/var/task/lib

cp /usr/lib64/atlas-sse3/liblapack.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libptf77blas.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libf77blas.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libptcblas.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libcblas.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libatlas.so.3 /var/task/lib/.
cp /usr/lib64/atlas-sse3/libptf77blas.so.3 /var/task/lib/.
cp /usr/lib64/libgfortran.so.3 /var/task/lib/.
cp /usr/lib64/libquadmath.so.0 /var/task/lib/.

Obtenez le dernier code source numpy de http://sourceforge.net/projects/numpy/files/NumPy/

Accédez au dossier du code source numpy, par exemple numpy-1.10.4. Créez un fichier site.cfg avec les entrées suivantes.

[atlas]
libraries=lapack,f77blas,cblas,atlas
search_static_first=true
runtime_library_dirs = /var/task/lib
extra_link_args = -lgfortran -lquadmath

Les indicateurs -lgfortran -lquadmath sont nécessaires pour lier statiquement les bibliothèques gfortran et quadmath aux fichiers définis dans runtime_library_dirs.

Construire NumPy

python setup.py build

Installer NumPy

python setup.py install

Vérifiez si les bibliothèques sont liées aux fichiers dans/var/task/lib

ldd $PYTHON_HOME/lib64/python2.7/site-packages/numpy/linalg/lapack_lite.so

Tu devrais voir

linux-vdso.so.1 =>  (0x00007ffe0dd2d000)
liblapack.so.3 => /var/task/lib/liblapack.so.3 (0x00007ffad6be5000)
libptf77blas.so.3 => /var/task/lib/libptf77blas.so.3 (0x00007ffad69c7000)
libptcblas.so.3 => /var/task/lib/libptcblas.so.3 (0x00007ffad67a7000)
libatlas.so.3 => /var/task/lib/libatlas.so.3 (0x00007ffad6174000)
libf77blas.so.3 => /var/task/lib/libf77blas.so.3 (0x00007ffad5f56000)
libcblas.so.3 => /var/task/lib/libcblas.so.3 (0x00007ffad5d36000)
libpython2.7.so.1.0 => /usr/lib64/libpython2.7.so.1.0 (0x00007ffad596d000)
libgfortran.so.3 => /var/task/lib/libgfortran.so.3 (0x00007ffad5654000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffad5352000)
libquadmath.so.0 => /var/task/lib/libquadmath.so.0 (0x00007ffad5117000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffad4f00000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffad4b3e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffad4922000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffad471d000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007ffad451a000)
/lib64/ld-linux-x86-64.so.2 (0x000055cfc3ab8000)
7
Vito Limandibhrata

À compter de 2017, NumPy et SciPy ont des roues qui fonctionnent sur Lambda (les paquetages incluent les fichiers précompilés libgfortran et libopenblas.). Autant que je sache, MoviePy est un pur module Python). Vous pouvez donc effectuer les opérations suivantes:

pip2 install -t lambda moviepy scipy

Ensuite, copiez votre gestionnaire dans le répertoire lambda et zippez-le. Sauf que vous allez probablement dépasser les limites de taille de 50/250 Mo. Il y a plusieurs choses qui peuvent aider:

  • supprimer les .pycs, docs, tests et autres éléments inutiles;
  • laisser un seul exemplaire des bibliothèques courantes de NumPy et SciPy;
  • libérez des bibliothèques de pièces non essentielles, telles que des symboles de débogage;
  • compresser l'archive en utilisant des paramètres plus élevés.

Voici un exemple script qui automatise les points ci-dessus.

6
wrwrwr

Une autre méthode très simple qui est possible ces jours-ci consiste à construire en utilisant les super conteneurs Docker que LambCI a créés pour imiter Lambda: https://github.com/lambci/docker-lambda

Le lambci/lambda:build conteneur ressemble à AWS Lambda avec l'ajout d'un environnement de construction presque complet. Pour démarrer une session Shell dans celle-ci:

docker run -v "$PWD":/var/task -it lambci/lambda:build bash

Dans la session:

export share=/var/task
easy_install pip
pip install -t $share numpy

Ou, avec virtualenv:

export share=/var/task
export PS1="[\u@\h:\w]\$ " # required by virtualenv
easy_install pip
pip install virtualenv
# ... make the venv, install numpy, and copy it to $share

Plus tard, vous pourrez utiliser le conteneur principal lambci/lambda pour tester votre construction.

5
johncip

A partir de 2018, procédez comme suit pour installer des modules externes dans Python3 sur AWS EC2:

  1. Lancez EC2 sur Amazon Linux AMI 201709.

  2. sSH avec PuTTY en utilisant la clé privée et publique et devenir super utilisateur.

  3. Installez Python 3 et créez un env virtuel, puis définissez-le par défaut

    yum install python36 python36-virtualenv python36-pip
    
    virtualenv -p python3.6 /tmp/my_python_lib
    
    source /tmp/my_python_lib/bin/activate
    
    which python --to check which version s installed
    
    pip3 install  numpy
    
  4. Copiez les fichiers sous les packages de site et dist-les dans votre machine locale à l’aide de Winscp.

    Pour trouver l'emplacement réel, utilisez les commandes grep ---

      grep -r dist-packages *. 
    

Ces paquets pourraient être à la fois dans lib et lib64.

  1. Les packages site et dist seront sous emplacement:

    /tmp/my_python_lib/lib64/python3.6,
    /tmp/my_python_lib/lib/python3.6
    
  2. Compressez ces packages avec votre fichier de script et transférez-les sur S3 auquel vous pouvez accéder en lambda. Au lieu de compresser le dossier racine, vous devez sélectionner tous les fichiers et le compresser ou l’envoyer dans un dossier compressé.

Conseils supplémentaires:

  1. Si vous souhaitez installer tous les packages dans un répertoire, vous pouvez utiliser la commande suivante:

     pip install --upgrade --target=/tmp/my_python_lib/lib/python3.6/dist-packages pandas
    
3
Abhishek Gaur

Depuis août 2018, le moyen le plus simple consiste probablement à démarrer un nouvel environnement AWS Cloud9 . Créez ensuite une fonction Lambda dans l'environnement. Ensuite, lancez ceci dans la ligne de commande Cloud9:

    cd YourApplicationName
    /venv/bin/pip install scipy -t .
    /venv/bin/pip install numpy -t .
    /venv/bin/pip install moviepy -t .

Je peux maintenant importer les modules dans la fonction lambda_handler.

2
karoli

Nov 2018 . Bonjour les amis, ce post est extrêmement utile pour moi. Cependant, les réponses à ce jour ne sont pas très automatisées. J'ai écrit un Python ici https://Gist.github.com/steinwaywhw/6a6a25d594cc07146c60af943f74c16f pour automatiser la création de compilation Python paquets utilisant pip et virtualenv sur EC2. Tout est Python (Boto3), pas de script bash, pas de console Web, pas de awscli.

Il y a un autre changement en plus de l'automatisation, qui, à mon avis, est une amélioration. J'ai téléchargé l'ensemble de l'environnement virtuel Python d'EC2) en préservant ses structures de dossiers, au lieu de fusionner les packages lib et lib64. Je ne comprends jamais la signification voulue pour Si certains packages en remplacent d'autres, n'est-ce pas? De plus, simuler un environnement virtuel officiel n'est pas moins une solution plus sûre que de lancer le vôtre.

Pour que l’environnement virtuel téléchargé fonctionne, le code source de la fonction Lambda ajoute du code standard à mettre à jour Python utilisant sys.path. Le projet sys.path De un Python peut être trouvé par

  • Sur votre propre ordinateur, créez un environnement virtuel et activez-le.
  • Exécutez un script Python dans cet environnement virtuel et exécutez print(sys.path) après import sys. Vous pouvez commencer à partir de là et modifier à votre guise.

Un extrait du code standard à ajouter pour une fonction Lambda afin de charger numpy et d'autres packages de mon environnement virtuel empaqueté est collé ci-dessous. Dans mon cas, j'ai chargé pandas_datareader, Qui s'appuie sur numpy.

import os
import sys 

# https://docs.aws.Amazon.com/lambda/latest/dg/current-supported-versions.html
workdir = os.getenv('LAMBDA_TASK_ROOT')
version = f'{sys.version_info[0]}.{sys.version_info[1]}'
additionals = [f'{workdir}/venv/lib64/python{version}/site-packages',
               f'{workdir}/venv/lib64/python{version}/lib-dynload',
               f'{workdir}/venv/lib64/python{version}/dist-packages',
               f'{workdir}/venv/lib/python{version}/dist-packages',
               f'{workdir}/venv/lib/python{version}/site-packages']
sys.path = additionals + sys.path

import pandas_datareader as pdr
2
Steinway Wu

Je peux confirmer que les étapes publiées par @ attila-tanyi fonctionnent correctement sous Amazon Linux. J'ajouterai seulement qu'il n'est pas nécessaire d'utiliser un EC2, car un conteneur Amazon Linux docker est disponible à partir du référentiel par défaut.

docker pull amazonlinux && docker run -it amazonlinux
# Follow @attila-tanyi steps
# Note - Sudo is not necessary here

J'utilise le fichier Dockerfile intégré à mon application pour créer et déployer sur Lambda.

1
Jay Carroll

J'aime la réponse de @Vito Limandibhrata mais je pense qu'il ne suffit pas de construire numpy avec runtime_library_dirs in numpy == 1.11.1. Si quelqu'un pense que site-cfg est ignoré, procédez comme suit:

cp /usr/lib64/atlas-sse3/*.a /var/task/lib/

Les fichiers * .a sous atlas-sse3 sont nécessaires pour construire numpy. En outre, vous devrez peut-être exécuter les éléments suivants:

python setup.py config

pour vérifier la configuration de numpy. Si cela nécessite quelque chose de plus, vous verrez le message suivant:

atlas_threads_info:
Setting PTATLAS=ATLAS   libraries ptf77blas,ptcblas,atlas not found in /root/Envs/skl/lib
    libraries lapack_atlas not found in /root/Envs/skl/lib
    libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib64   
    libraries lapack_atlas not found in /usr/local/lib64
    libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib         
    libraries lapack_atlas not found in /usr/local/lib
    libraries lapack_atlas not found in /usr/lib64/atlas-sse3
<class 'numpy.distutils.system_info.atlas_threads_info'>
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
Setting PTATLAS=ATLAS
    libraries lapack not found in ['/var/task/lib']
Runtime library lapack was not found. Ignoring
    libraries f77blas not found in ['/var/task/lib']
Runtime library f77blas was not found. Ignoring
    libraries cblas not found in ['/var/task/lib']
Runtime library cblas was not found. Ignoring
    libraries atlas not found in ['/var/task/lib']
Runtime library atlas was not found. Ignoring
    FOUND:
        extra_link_args = ['-lgfortran -lquadmath']
        define_macros = [('NO_ATLAS_INFO', -1)]
        language = f77
        libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas', 'lapack', 'f77blas', 'cblas', 'atlas']
        library_dirs = ['/usr/lib64/atlas-sse3']
        include_dirs = ['/usr/include']

alors site-cfg sera ignoré.

Conseil: Si pip est utilisé pour créer numpy avec runtime_library_dirs, vous feriez mieux de créer ~/.numpy-site.cfg et ajoutez ce qui suit:

[atlas]
libraries = lapack,f77blas,cblas,atlas
search_static_first = true
runtime_library_dirs = /var/task/lib
extra_link_args = -lgfortran -lquadmath

puis numpy reconnaît le fichier .numpy-site.cfg. C'est assez simple et facile.

0
sangheestyle