web-dev-qa-db-fra.com

Liste des dépendances du fichier de roue Python

J'ai un fichier de roue Python: psutil-5.4.5-cp26-none-linux_x86_64.whl

Comment puis-je lister les dépendances de cette roue?

12
guettli

Comme mentionné précédemment, les fichiers .whl ne sont que des archives Zip. Vous pouvez simplement les ouvrir et les fouiller dans le fichier METADATA.

Cependant, il existe un outil qui peut faciliter un peu ce processus manuel. Vous pouvez utiliser pkginfo , qui peut être installé en utilisant simplement pip.

$ pip install pkginfo
$ pkginfo -f 'requires_dist' psutil-5.4.5-cp27-none-win32.whl
requires_dist: ["enum34; extra == 'enum'"]
11
samu

Je viens d'essayer de décompresser (pas gunzip) un paquet de roue que j'avais traîner. Le fichier packagename-version.dist-info/METADATA contient une liste d'entrées Requires-Dist: contenant les conditions requises compilées à partir de setup.py.

4

Vous pouvez installer le fichier wheel dans un environnement virtuel distinct, puis rechercher les autres packages installés.

2
SHIVAM JINDAL

Voici un extrait minimal qui ne vous oblige à avoir aucun outil externe (unzip, gzip ou similaire), il devrait donc fonctionner dans les deux * nix/windows:

wheeldeps.py:

import argparse
from zipfile import ZipFile

parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()

archive = ZipFile(args.filename)
for f in archive.namelist():
    if f.endswith("METADATA"):
        for l in archive.open(f).read().decode("utf-8").split("\n"):
            if 'requires-dist' in l.lower():
                print(l)

Exemple:

> python wheeldeps.py psutil-5.4.5-cp27-cp27m-win_AMD64.whl
Requires-Dist: enum34; extra == 'enum'  
0
BPL

Réponse générique, sous unix: utilisez strace

Trouvez le pid:

ps -C psutil
// Output example 1337

Strace tout dans les processus 

Sudo strace -p 1337

Dépendances de processus Strace uniquement: 

Sudo strace -f -e open -p 1337
0
Cryptopat

Ceci est un post que j'ai trouvé quelque part. Je copiais tout et m'envoyais un courrier électronique, je n'ai donc pas de source pour cette réponse, mais je pense que cela pourrait aider. Si quelqu'un connaît la source, je vais supprimer ce message et le lier à ce message.

Installation
$ pip install --upgrade pip  # pip-tools needs pip==6.1 or higher (!)
$ pip install pip-tools
Example usage for pip-compile
Suppose you have a Flask project, and want to pin it for production. Write the following line to a file:

# requirements.in
Flask
Now, run pip-compile requirements.in:

$ pip-compile requirements.in
#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile requirements.in
#
flask==0.10.1
itsdangerous==0.24        # via flask
jinja2==2.7.3             # via flask
markupsafe==0.23          # via jinja2
werkzeug==0.10.4          # via flask
And it will produce your requirements.txt, with all the Flask dependencies (and all underlying dependencies) pinned. Put this file under version control as well and periodically re-run pip-compile to update the packages.

Example usage for pip-sync
Now that you have a requirements.txt, you can use pip-sync to update your virtual env to reflect exactly what's in there. Note: this will install/upgrade/uninstall everything necessary to match the requirements.txt contents.

$ pip-sync
Uninstalling flake8-2.4.1:
  Successfully uninstalled flake8-2.4.1
Collecting click==4.1
  Downloading click-4.1-py2.py3-none-any.whl (62kB)
    100% |████████████████████████████████| 65kB 1.8MB/s
  Found existing installation: click 4.0
    Uninstalling click-4.0:
      Successfully uninstalled click-4.0
Successfully installed click-4.1

L'exigence.txt aura toutes les exigences nécessaires pour le paquet. 

0
Sam

J'utilise pour installer mes envs virtuels avec pipenv qui installe pew comme condition requise. pew vous permet d'installer des environnements virtuels temporaires qui sont supprimés lorsque vous exit ces environnements virtuels spéciaux. Alors...

Créez un nouvel environnement virtuel vide et activez-le à la volée:

pew mktmpenv -p /usr/bin/python3.6

Installez votre paquet:

pip install somedistro

Voyez quelles sont les exigences de votre distribution (ainsi que les exigences des exigences ...):

pip list

Désactiver et supprimer l'environnement temporaire.

exit

De plus, les environnements virtuels temporaires sont très utiles pour les tests d'empaquetage.

0
glenfant