J'ai un paquet Cependant, je ne trouve pas un bon moyen de configurer Utilisez le Alors j'essaie d'envelopper le binaire dans un script Python à l'aide de Une autre solution potentielle est le mot-clé Référence: https://docs.python.org/3/distutils/setupscript. HTML P> awesomepkg code> avec
setup.py code>. J'aimerais installer un exécutable binaire
AwesomeoTool code> à la ligne de commande avec le package lui-même lorsque les utilisateurs exécutent
pip installez Awesomepkg code>. J'ai compilé différentes versions OS pour
AwesomeTool CODE>, qui vit dans un dossier
bin / code> à côté de
setup.py code>. p>
setup.py code>. J'ai tenté ce qui suit: p>
scripts = [] code> mot-clé dans
Configuration () code>. Malheureusement, l'exécutable doit être un script Python. P> li>
OS.System ('bin / awesomeool') code> pour déléguer. Il échoue également car le script wrapper est copié ailleurs par pip, de sorte qu'il ne sait pas où le chemin relatif
bac / awesomeool code> est. p> li>
data_files code>. Toutefois, pour une raison quelconque, les fichiers de données ne sont pas copiés à
Site_Packages CODE> INSTALLATION DIR, même si exécutant
python setup.py bdist_wheel code> dit qu'ils ont été copiés. p> li>
ol>
3 Réponses :
Je viens de courir dans ce numéro moi-même. Ma solution était de trois fois.
J'ai ajouté le programme, par ex. J'ai fait un script Python similaire à votre étape 2. Toutefois, au lieu du chemin relatif, j'ai d'abord importer J'ai ajouté ce script sur les scripts code> code> Mot clé de AwesomeTool code>, à ma structure de colis afin que je puisse l'ajouter via le fichier
package_data code> mot-clé:
package_data = {'awesomepkg': ['Awesomeool']} code>.
Cela le fait réellement être copié dans le même dossier que la principale
awesomepkg code> et utilisez
awesomepkg .__ path __ code> pour obtenir Le chemin absolu avec le dossier d'installation pour le package. Cela ressemblerait à: p>
import awesomepkg
import subprocess as sp
import sys
path = awesomepkg.__path__[0]
command = path + "/awesometool"
sp.call([command] + sys.argv)
Configuration () CODE> P> LI>
ol> p>
Buscipant peu pour résumer, vous avez fait un script de wrapper Python et l'a ajouté au scripts code> Beyworkd of
Configuration () code>.
J'ai couru dans le problème ici, je reçois une erreur autorisation refusée code> en raison de la propriété du fichier binaire. Comment puis-je aborder ce problème?
de
Pour ajouter sur la réponse de Nick Porubsky: P>
chmod + x code> li>
- Assurez-vous d'avoir un shebang sur votre script Bash afin qu'il sait d'exécuter avec Python Li>
ol>
Un exemple de ceci peut être trouvé ici.
https://github.com/housekeepltd/pywkher/commit/0bad81240F16479550E2B1BF2C1185A20D3CEE29 P >