2 votes

Les paquets installés avec pip changent-ils en fonction de la configuration de python ?

J'ai un doute conceptuel concernant la façon dont les dépendances des paquets Python sont installées/configurées, ceci est lié aux configurations de compilation.

Cas 1

Paquets installés pyscreenshot, image, pillow en utilisant pip à partir d'un python 2.7 configuré avec ucs2 dans l'espace libraire de l'utilisateur (--user). J'ai exécuté une api pour obtenir une capture d'écran du bureau, tout se passe bien.

Cas 2

Exécution d'un autre python 2.7 configuré avec ucs4 Il trouve les paquets parce qu'ils ont été installés dans l'espace utilisateur. J'ai exécuté la même API pour obtenir une capture d'écran du bureau, mais elle s'est arrêtée. La configuration ucs4 était incompatible avec le fonctionnement des paquets.

Pourquoi cela s'est-il produit ? Des versions différentes des mêmes paquets ont-elles pu être installées en fonction de la configuration de Python ?

Remarque : explication ucs2/ucs4 https://docs.python.org/2/c-api/unicode.html

2voto

SCGH Points 607

Pourquoi cela s'est-il produit ?

Cela s'est produit parce que lorsque les deux codes C (binaires) ont été chargés dans la mémoire, chacun d'entre eux a traité les chaînes de caractères de manière différente. En documentation python il est clairement indiqué que : "... les versions UCS2 et UCS4 de Python ne sont pas compatibles sur le plan binaire. Veuillez garder cela à l'esprit lorsque vous écrivez des extensions ou des interfaces."

La documentation indique également que : "L'interface de Python Les constructions par défaut utilisent un pour Py_UNICODE et stocker les valeurs Unicode en interne comme UCS2". Ce que vous avez fait, c'est d'installer un paquet compatible avec l'interpréteur par défaut et de l'exécuter avec un interpréteur Python non compatible.

Des versions différentes des mêmes paquets peuvent-elles être installées en fonction de la configuration de Python ?

Je ne suis pas sûr que pip soit capable de gérer les variantes de paquets UCS2 et UCS4. Que se passe-t-il lorsque vous installez les mêmes paquets en utilisant pip à partir de votre interpréteur UCS4 ? Si la version UCS2 du paquet est installée lors de l'utilisation de la version UCS4 de pip, je recommanderais de télécharger la distribution source du paquet et de le compiler vous-même avec UCS4.

Je sais que pip peut différencier l'OS (Windows / linux) et l'ABI, mais je ne pense pas qu'il puisse gérer les différences UCS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X