0
votes

PIP Package avec une dépendance spécifique

Je veux créer un package PIP qui dépend de certains fichiers spécifiques au système d'exploitation:

Disons qu'il y a:

  • dépendance_windows_x86_64.zip
  • dépendance_linux_x86_64.zip
  • dépendance_mac_os_x.zip

    Je ne veux pas inclure les trois archives dans un projet d'emballage, mais téléchargez-les de manière dynamique lors de l'installation de My-package basée sur le système d'exploitation de l'utilisateur. Comment puis je faire ça ? Où devrais-je mettre le code responsable du téléchargement / décompression de ces fichiers?

    mon setup.py ressemble à ceci: xxx


0 commentaires

3 Réponses :


1
votes

première réponse est abandonner et utiliser seugools . Regarde Dépendances spécifiques à la plate-forme pour un bon écrire de quoi faire.

Seconde réponse consiste à créer des packages distincts tels que "MyLib-Mac", "MyLib-Win", "MyLib-Linux".

Troisième réponse consiste à utiliser l'approche "Console_Script". Cela va casser. Bien qu'il génère des fichiers .exe sur Windows, il a des modes de défaillance impairs. En outre, certains utilisateurs ne seront pas en mesure de télécharger de manière dynamique des fichiers car ils travaillent à partir d'un clone interne d'un référentiel. Le code d'exécution au hasard à partir d'Internet sur la production peut effrayer les gens.

J'espère que cela vous aidera!


0 commentaires

1
votes

Une solution pourrait être de publier une plate-forme spécifique python roues de votre projet. Les fichiers spécifiques à la plate-forme pourraient être ajoutés aux distributions pré-conçues via une commande Custom Seruptools (probablement une sous-commande de construction , ou peut-être installez ) / p> xxx


0 commentaires

3
votes

Les dépendances spécifiques à la plate-forme pourraient être conservées dans des projets de python distincts (emballages autour des paquets de données uniquement), puis requis dans le projet principal comme ci-dessous:

# setup.cfg
# ...
[options]
install_requires =
    my_package_win_amd64 ; platform_system=="Windows" and platform_machine=="x86_64"
    my_package_linux-x86_64 ; platform_system=="Linux" and platform_machine=="x86_64"


3 commentaires

et comment puis-je accéder au contenu de l'emballage de mon-package ?


Il y a quelques bonnes solutions, telles que pkg_resources < / Code> ou même mieux ImportLib .Resources dans la bibliothèque standard ( Quelques exemples ici ).


Merci Monsieur! Je vais essayer cette approche