IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

executer un .sh pour activer un environnement virtuel


Sujet :

Linux

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 35
    Points : 20
    Points
    20
    Par défaut executer un .sh pour activer un environnement virtuel
    Bonjour à tous,

    J'ai essayé plusieurs solutions trouvé sur internet, mais je n'arrive pas à y arriver.

    J'ai un script Python3 fonctionnant sur Ubuntu.

    Pour faire fonctionner le script, je dois être dans un environnement virtuel.

    Mon script ce trouve dans :
    root@ubuntu:/home/iot_devices/main.py
    Pour activer l'environnement virtuel, j'écris dans le terminal :
    root@ubuntu:/home/iot_devices# source .venv/bin/activate
    (.venv) root@ubuntu:/home/iot_devices#
    J'ai créé un fichier demarrer_script.sh avec (trouvé exemple sur internet):
    #!/bin/bash
    source .venv/bin/activate
    python3 main.py
    Je dois pouvoir exécuter mon script au démarrage:
    crontab -e
    @reboot /home/iot_devices/demarrer_script.sh
    Cela ne fonctionne pas.

    Si j'exécute dans le répertoire /home/iot_devices les commandes suivantes, cela fonctionne:
    source .venv/bin/activate
    python3 main.py
    Pouvez-vous me donner un coup de main pour activer l'environnement virtuel et exécuter mon script ?

    Merci

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 573
    Points : 19 414
    Points
    19 414
    Par défaut
    Bonjour,

    quel est cet environnement virtuel ?
    pourquoi le script ne s'y trouve-t-il pas ?
    existe-t-il une commande de cet environnement virtuel pour exécuter une commande extérieure dans cet environnement ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 179
    Points : 4 609
    Points
    4 609
    Par défaut
    bonjour
    Citation Envoyé par Gregory_007 Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @reboot /home/iot_devices/demarrer_script.sh
    source .venv/bin/activate   # OOPS non trouvé
    confusion entre les chemins relatifs et absolu




    @N_BaH
    puisque tu fais un peu de python :
    Depuis un an (variable suivant les os/distributions), pip install PAQUET se bloque et conseille d'installer nos paquets que dans des environnements virtuel
    c'est un environnement virtuel python très très classique (que devrait utiliser tout dev python), cela permet d'avoir ces dépendances python dans ce sous répertoire .venv de notre projet (et pas installées dans notre système). Cela permet aussi d'avoir des versions de paquets différentes du système et des versions différentes entre chaque projet. On fait des "pip install" uniquement dans cet environnement virtuel.
    En gros, source .venv/..., va modifier le $PATH pour appeler un python configuré dans le sous répertoire ".venv"
    Existe pas mal d'outils python pour faire cela.

    exemple (j'utilise uv pour cela, ici il fait des hard liens(ou liens symbolique) depuis son cache pour recréer un /usr/lib/pythonXX/ spécifique au projet)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $ uv venv  # créer l'environnement virtuel dans ./.venv/
    # j'ai un python en "local" :
    ls -l ./.venv/bin
    total 40K
    -rw-r--r-- 1 patrick users 3,4K  5 juil. 16:03 activate
    -rw-r--r-- 1 patrick users 2,3K  5 juil. 16:03 activate.bat
    -rw-r--r-- 1 patrick users 2,6K  5 juil. 16:03 activate.csh
    -rw-r--r-- 1 patrick users 4,2K  5 juil. 16:03 activate.fish
    ...
    lrwxrwxrwx 1 patrick users   19  5 juil. 16:03 python -> /usr/bin/python3.12
    lrwxrwxrwx 1 patrick users    6  5 juil. 16:03 python3 -> python
    lrwxrwxrwx 1 patrick users    6  5 juil. 16:03 python3.12 -> python
     
    # uv pip install truc machin chose
    # il a ces propres paquets comme avec /lib/python3.12
     
    # cd .venv/lib/python3.12/site-packages/PySide6
    $ pwd
    /home/patrick/workspace/python/QT6/pacman-logs/.venv/lib/python3.12/site-packages/PySide6
    $ ls -l
    ll
    total 103M
    -rwxr-xr-x  2 patrick users 1,8M  1 juil. 01:38 assistant
    -rwxr-xr-x  2 patrick users  65K  1 juil. 01:38 balsam
    -rwxr-xr-x  2 patrick users 123K  1 juil. 01:38 balsamui
    -rw-r--r--  2 patrick users  802  1 juil. 01:38 _config.py
    -rwxr-xr-x  2 patrick users 644K  1 juil. 01:38 designer
    -rw-r--r--  2 patrick users  246  1 juil. 01:38 __feature__.pyi
    -rw-r--r--  2 patrick users  657  1 juil. 01:38 _git_pyside_version.py
    drwxr-xr-x  2 patrick users 4,0K  1 juil. 01:40 glue
    drwxr-xr-x 57 patrick users 4,0K  1 juil. 01:40 include
     
    hard liens donc .venv créé en une seconde et léger en place disque
    $moi= ( !== ) ? : ;

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 573
    Points : 19 414
    Points
    19 414
    Par défaut
    ok.
    merci

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 35
    Points : 20
    Points
    20
    Par défaut
    Merci @papajoker pour ta réponse.

    Si je comprends bien, je dois mettre dans crontab :
    @reboot /home/iot_devices/demarrer_script.sh
    source /home/iot_devices/.venv/bin/activate
    C'est bien ce que tu voulais dire ?

    Merci

Discussions similaires

  1. Comment activer environnement virtuel dans VS Code
    Par OZ1977 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 13/04/2021, 14h16
  2. [LibreOffice][Base de données] Erreur : LibreOffice nécessite un environnement d'exécution Java (JRE) pour exécuter cette tâche
    Par apprenant16 dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 17/11/2018, 23h00
  3. Réponses: 25
    Dernier message: 02/06/2010, 10h29
  4. Réponses: 0
    Dernier message: 10/05/2010, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo