6
votes

Comment empêcher la roue python de l'expansion de Shebang?

Si je construis un package avec python setup.py bdist_wheel , le package résultant élargit les Shebangs dans les scripts répertoriés dans setup.py via Configuration (scripts = ["script / chemin" ]) Pour utiliser le chemin absolu sur mon exécutable Python #! / home / f483 / dev / storj / storjnode / env / bin / python . .

Ceci est évidemment un problème car quiconque utilisant la roue n'aura pas cette configuration. Il ne semble pas faire de différence quel genre de shebang j'utilise.


3 commentaires

Est-ce réellement dans la roue? Je veux dire, pouvez-vous voir votre chemin absolu quand vous le décompressez? Je m'attendrais à ce que la substitution du chemin ne se produise que après l'installation et cela dépend simplement de votre configuration Virtualenv.


Oui, c'est pourquoi je reçois une erreur sur une autre machine.


Il semble que ceci est un bug dans la roue, il y a un billet ouvert ici: bitbucket.org/pypa/wheel/issues/135/...


3 Réponses :


0
votes

Utilisation du générique Shebang #! Python semble résoudre ce problème.

Edit: Ceci est Incorect!


2 commentaires

C'est aussi incorrect. Si vous exécutez un fichier avec SHBANG #! Python Il va simplement vous dire que c'est un mauvais interprète.


L'étape d'installation en option dans la spécification de roue est censée remplacer #! Python avec un chemin valide ( Python.org/Dev/Peps/PEP-0427/#Recommended-Installer-Feature S ). Quand je mets #! Python en haut de mon script, la roue la laisse correctement seule lors de l'exécution de bdist_wheel.



2
votes

Cela ne devrait pas normalement arriver. Je suggérerais non plus:

  1. Mise à niveau de PIP / Wheel / SeugoTools et vérifiant si c'était peut-être un bug.

  2. revérifier que le SHBANG actuel est quelque chose de générique dans le script. Par exemple #! / Usr / bin / env python

    Voici une manière que je ne peux pas reproduire le problème: xxx

    Si vous déballez cette roue, s.py sera Avoir un invalide / espace réservé à SHBANG #! Python , mais lors de l'installation réelle, il sera remplacé par le chemin système / virtualv.


0 commentaires

2
votes

Je l'ai finalement réduit et j'ai trouvé le problème.

ici les étapes exactes pour reproduire le problème et la solution.

  1. Utilisez un shebang valide dans un script ajouté à setup.py. Dans mon cas #! / Usr / bin / env python

  2. Créez un virtualenv avec virtualenv -p / usr / bin / python2 env et activez avec source env / bin / activer

  3. Installez le package avec Python Setup.py Installer sur Virtualenv.

  4. construire la roue avec python setup.py bdist_wheel .

    Le problème consiste à installer le package sur Virtualenv à l'étape 3. Si cela n'est pas effectué, le shebang n'est pas élargi.


1 commentaires

Je vois ce problème, même lorsque vous sautez à l'étape 3.