Partage
  • Partager sur Facebook
  • Partager sur Twitter

Python Portable et venv

15 février 2021 à 17:28:14

Salut a tous, je cherches a ajouter a mon projet un bat file qui me permet de lancer mon script via une ligne de commande.

J'ai ajouter a mon projet le venv que j'avais cree sur le pc que j'ai utilise pour cree le script. Sur mon PC quand je lance la commande pas de probleme tout est A1.

Lorsque je telecharge sur un autre PC mon script me donne l'erreur suivante : "No Python at 'C:\Users\(Le nom de mon PC ou le projet a ete cree)\AppData\Local\Programs\Python\Python38-32\python.exe'"

Je croyais que le venv etait une version portable de python avec les libs necessaire au projet, si quelqu'un peut m'expliquer comment ajouter python a mon projet pour qu'il se lance depuis n'importe quel PC, j'apprecirais grandement.

En fait jai copie le fichiers activate.bat dans le dossier Scripts du venv et j'ai ajouter mon fichier.py et mes args(je connais rien au language Bash)

Merci d'avance dsl pour les fautes normalement jutilise antidote mais mon pc a crame

Voici mon Scripts .bat

@echo off

rem This file is UTF-8 encoded, so we need to update the current code page while executing it
for /f "tokens=2 delims=:." %%a in ('"%SystemRoot%\System32\chcp.com"') do (
    set _OLD_CODEPAGE=%%a
)
if defined _OLD_CODEPAGE (
    "%SystemRoot%\System32\chcp.com" 65001 > nul
)

set VIRTUAL_ENV=venv
if not defined PROMPT set PROMPT=$P$G

if defined _OLD_VIRTUAL_PROMPT set PROMPT=%_OLD_VIRTUAL_PROMPT%
if defined _OLD_VIRTUAL_PYTHONHOME set PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%

set _OLD_VIRTUAL_PROMPT=%PROMPT%
set PROMPT=(venv) %PROMPT%

if defined PYTHONHOME set _OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%
set PYTHONHOME=

if defined _OLD_VIRTUAL_PATH set PATH=%_OLD_VIRTUAL_PATH%
if not defined _OLD_VIRTUAL_PATH set _OLD_VIRTUAL_PATH=%PATH%

set PATH=%VIRTUAL_ENV%\Scripts;%PATH%

:END
if defined _OLD_CODEPAGE (
    "%SystemRoot%\System32\chcp.com" %_OLD_CODEPAGE% > nul
    set _OLD_CODEPAGE=
)
cd %~dp0\
python request_http.py 20000
pause



  • Partager sur Facebook
  • Partager sur Twitter

On se met la pression grave, mais y restera quoi le jour où on crèvera!

15 février 2021 à 18:31:17

Je ne connais pas le batch, mais où actives-tu l'environnement virtuel ?
  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

15 février 2021 à 20:02:10

je ne l'active pas, cest le script si dessus qui l'active normalement(il est dans venv/Scripts/activate.bat)

J'ai juste ajouter mes 2 ligne pour lancer le code

Par contre s'il y a une facon de cree une version portable de python, d'y ajouter mes libs et de l'ajouter a mon dossier de mon projet, je peux ensuite pointer mon bat file sur ce dossier et lancer le script.

Je veux juste qu'on puisse lancer mon programme sans rien installer. Tout maniere d'y arriver me convient tres bien.

  • Partager sur Facebook
  • Partager sur Twitter

On se met la pression grave, mais y restera quoi le jour où on crèvera!

15 février 2021 à 20:36:44

Si il n'est pas activé, alors le code ne pourra pas s'exécuter avec Python. La condition pour exécuter Python est d'activer l'environnement virtuel, d'aller dans le dossier où se trouve le fichier python à exécuter, et d'exécuter sa commande python monfichier.py

  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

15 février 2021 à 21:20:58

Le probleme cest que se scripts normalement il active python et le venv mais la il tente de l'active avec un chemin absolu C:\Users\(Le nom du PC qui a cree le venv)\AppData\Local\Programs\Python\Python38-32\python.exe

Le chemin absolu du venv pointe vers mon PC qui a cree le venv et meme si je l'active via python sur le nouvelle ordi en installant python, se que je souhaite eviter. le venv me dit que les modules ne sont pas trouver. Je dois changer le path du venv pour qu'il pointe vers python de la presente ordi.

Mais au final je voudrais un programme qui n'a pas besoin d'installer python.

J'aimerais integre python a mon projet avec les libs necessaire pour executer mon projet pour qu'on ai juste a downloader le zip, l'extraire et lancer le script sur n'importe quel PC. Comme un programme normal.

  • Partager sur Facebook
  • Partager sur Twitter

On se met la pression grave, mais y restera quoi le jour où on crèvera!

15 février 2021 à 22:21:40

Lavoie005 a écrit:

Le chemin absolu du venv pointe vers mon PC

Pas compris o_O

Lavoie005 a écrit:

et meme si je l'active via python sur le nouvelle ordi en installant python, se que je souhaite eviter. le venv me dit que les modules ne sont pas trouver. Je dois changer le path du venv pour qu'il pointe vers python de la presente ordi.

Euh si c'est pas toi qui copie l'environnement virtuel dans son PC, qui installe les modules nécessaires avec son fichier requirements.txt, il faudra bien qu'il fasse tout ça lui même...

Lavoie005 a écrit:

Mais au final je voudrais un programme qui n'a pas besoin d'installer python.

Dans ce cas utilise pyinstaller et crée lui un fichier exécutable python.

Lavoie005 a écrit:

J'aimerais integre python a mon projet avec les libs necessaire pour executer mon projet pour qu'on ai juste a downloader le zip, l'extraire et lancer le script sur n'importe quel PC. Comme un programme normal.

Donc en gros, dans ton fichier batch

  • Utiliser une commande pour dézipper ton archive
  • Activer ton environnement virtuel en exécutant activate.bat
  • Installer les modules nécessaires avec pip install -r requirements.txt
  • Exécuter le fichier python principal.

Se trouvant dans un environnement virtuel python, une abstraction est créée afin que tes dépendances n'impactent pas son système d'exploitation.

  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

16 février 2021 à 0:26:26

Pour la distribution d'application Python sur Windows : pynsist.
C'est la solution "clé-en-main" la plus propre que je connaisse.

Pour le reste cette lecture devrait être utile à tous.

  • Partager sur Facebook
  • Partager sur Twitter
16 février 2021 à 19:02:23

Parfait merci a vous 2, je vais regarder pynsist, dans les 2 cas j'ai besoin d'une liste de toute mes librairies, est ce qu'il y a une maniere de recuperer toute les libs de mon venv avec les versions pour les mettres dans requirements.txt sans le faire manuellement 1 a 1?
  • Partager sur Facebook
  • Partager sur Twitter

On se met la pression grave, mais y restera quoi le jour où on crèvera!

16 février 2021 à 23:38:36

Lavoie005 a écrit:

est ce qu'il y a une maniere de recuperer toute les libs de mon venv avec les versions pour les mettres dans requirements.txt sans le faire manuellement 1 a 1?


pip freeze > requirements.txt


  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

17 février 2021 à 8:27:54

cette commande ça fait des gros requirements.txt, perso jpréfère l'écrire à la main
  • Partager sur Facebook
  • Partager sur Twitter
17 février 2021 à 9:16:44

thelinekioubeur a écrit:

cette commande ça fait des gros requirements.txt, perso jpréfère l'écrire à la main


chacun ses goûts :lol:
  • Partager sur Facebook
  • Partager sur Twitter

Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)