2 votes

Comment définir l'environnement Python pour LaunchDaemons ?

J'ai installé Python 3 via Homebrew, sur mon système Mojave, et je l'ai mis en lien symbolique sous le nom de /usr/local/bin/python .

J'ai un plist LaunchDaemon comme suit :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>test</string>
        <key>ProgramArguments</key>
        <array>
          <string>python</string>
          <string>--version</string>
        </array>
        <key>RunAtLoad</key><true/>
        <key>KeepAlive</key><true/>

        <key>EnvironmentVariables</key>
        <dict>
            <key>PATH</key>
            <string>/usr/local/bin/python3</string>
            <key>PYTHONPATH</key>
            <string>/usr/local/lib/python3.7/site-packages</string>
        </dict>

        <key>StandardOutPath</key>
        <string>/var/log/test.log</string>
        <key>StandardErrorPath</key>
        <string>/var/log/test_err.log</string>

    </dict>
</plist>

Cependant, cela renvoie toujours Python 2.7.10 qui est installé par défaut sur le système Mojave.

Comment puis-je configurer le chemin de ce LaunchDaemon pour qu'il ait accès à l'environnement Python 3 ?


Informations supplémentaires :

Pour la plist complète que j'utilise, le programme appelle Python à un moment donné (Python n'est pas le point d'entrée), d'où la nécessité de l'option PYTHONPATH étant défini pour pointer vers le site-packages où certains paquets supplémentaires ont été installés.

L'erreur qui s'affiche est la suivante :

Your PYTHONPATH points to a site-packages dir for Python 3.x but you are running Python 2.x!
     PYTHONPATH is currently: "/usr/local/lib/python3.7/site-packages"
     You should `unset PYTHONPATH` to fix this.

3voto

Michael Zhou Points 167

Je vous suggère d'utiliser un chemin absolu dans ProgramArguments, ainsi

    <key>ProgramArguments</key>
    <array>
    <string>python</string>

deviendrait

    <key>ProgramArguments</key>
    <array>
    <string>/usr/local/bin/python3</string>
    ..........

Votre variable PATH n'est pas correcte. Changez-la en

    <key>PATH</key>
    <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>

-1voto

Natsfan Points 12853

Puisque vous avez plus d'une version de Python sur votre machine, vous devez absolument créer les environnements virtuels o ici. . Créez-en un pour chaque version de Python que vous avez et vous pourrez ensuite activer l'environnement virtuel pour la version de Python que vous souhaitez exécuter.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X