web-dev-qa-db-fra.com

Comment puis-je exécuter un script Shell à la place de python dans une configuration d'exécution PyCharm?

J'essaie de configurer PyCharm pour qu'il appelle un script Shell au lieu de python, comme option d'exécution. Est-ce possible? Dans les options par défaut, je n'ai que des tests Python, Docs Python et Python. Avec l'édition professionnelle, j'ai aussi Django et d'autres. Cependant, ils ont tous python comme interprète dans une liste déroulante et ils ne peuvent pas être changés aussi loin que je peux voir.

25
Stefano Borini

C'est vraiment une fonctionnalité manquante qui devrait normalement être considérée comme une fonctionnalité de base. Il y a deux options

  1. J'ai d'abord essayé de créer une configuration Python standard (vide) et d'utiliser l'option "Avant le lancement" -> outil externe. Vous devez donc créer une nouvelle définition d'outil externe avec les paramètres de l'outil:

    • Programme: cmd.exe
    • Paramètres:/C your-batch-file.bat 
    • Répertoire de travail $ ProjectFileDir $ (dans mon cas, $ ProjectPath $ était vide)

    Le problème avec cette solution est que la sortie standard "outil externe" est redirigée vers un onglet supplémentaire dans la fenêtre du journal de la console qui passe immédiatement en arrière-plan lorsque la configuration fictive de Python est exécutée.

  2. Deuxièmement et mieux, utilisez python pour exécuter la commande. Normalement, j'utilise toujours un module de sous-processus, mais dans ce cas, os.system () est la solution simple et agréable. La configuration d'exécution de python ressemble alors à ceci
    • Script: (vide)
    • Paramètres: -c "import os; os.system ('votre-fichier-batch')"
    • Répertoire de travail: (sélectionnez le répertoire du projet, malheureusement pas de macros ici)
4
user6316071

Je pense que le moyen le plus simple est d'écrire un script python qui appelle le fichier .bat, puis de l'exécuter:

from subprocess import Popen

p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
stdout, stderr = p.communicate()
2
S. Stromberg

Une autre solution à ce problème consiste à modifier le fichier config/options/jdk.table.xml dans le dossier de configuration de votre PyCharm. Vous ajoutez simplement une autre entrée dans votre liste jdks:

<jdk version="2">
  <name value="Python 3.7 (docker)" />
  <type value="Python SDK" />
  <version value="Python 3.7.0" />
  <homePath value="/path/to/your/Shell.sh" />
  <roots>
    <classPath>
      <root type="composite" />
    </classPath>
    <sourcePath>
      <root type="composite" />
    </sourcePath>
  </roots>
  <additional />
</jdk>

Après cela, sélectionnez simplement votre interprète pour votre projet et vous pourrez utiliser ce shell comme interprète. J'ai utilisé cette solution lors de l'utilisation d'interprète à l'intérieur de l'image du docker.

0
jan-hybs