2016-02-13 1 views

Répondre

3

En regardant à travers le fichier qui implémente les différentes options de ligne de commande pour pip et en lisant la documentation, il semblerait qu'aucune de ces options n'ait la capacité d'exclure des paquets basés sur ce critère. --no-binary et --only-binary semblent traiter de la compilation en général plutôt que d'exclure les paquets avec du contenu non-python.

https://github.com/pypa/pip/blob/de6e4b5c9ea942e6c961066f1ad7f5398b730dfa/pip/cmdoptions.py

La roue python PEP a métadonnées qui montre quelle partie du paquet est une purelib et obtient étendu à site-packages, et un champ booléen Root-Is-Purelib ce qui semble indiquer que l'ensemble du paquet est python pur. https://www.python.org/dev/peps/pep-0491/ Il peut être possible de configurer pip pour exclure tout sauf les roues, puis filtrer les roues en fonction des métadonnées.

Le drapeau obsolète --use-wheel semble faire en sorte que les pipettes préfèrent les roues, mais n'excluent pas les roues. Il ne semble pas y avoir de moyen de bloquer l'installation des roues en fonction de leurs métadonnées.

+0

Recherche de ['cpython'] (https://github.com/pypa/pip/search?utf8=%E2%9C%93&q=cpython&type=Code) et ['jython'] (https: // github .com/pypa/pip/recherche? utf8 =% E2% 9C% 93 & q = jython & type = Code) dans le code pip ne montre rien qui permettrait de faire cette distinction non plus. – Skrat

+0

En ce moment je lis le PEP de la roue pour voir s'il y a des métadonnées que je pourrais utiliser pour exclure des paquets avec du code natif. –