J'ai un paquet que j'ai installé à partir d'un environnement virtuel. Si je lance simplement l'interpréteur python, ce paquet peut être importé sans problème. Toutefois, si je lance Idle, ce package ne peut pas être importé (car il n’est disponible que dans un fichier virtualenv particulier et non dans le monde). Comment puis-je lancer Idle à partir d'un virtualenv, afin que tous les packages de virtualenv soient disponibles?
IDLE est essentiellement
from idlelib.PyShell import main
if __== '__main__':
main()
Vous pouvez donc le lancer vous-même, sauf si vous avez créé virtualenv sans packages par défaut.
python -m idlelib.idle
De cette réponse .
Cette réponse suppose Python 3.
Il existe quelques gestionnaires d’environnements virtuels différents, chacun ayant une manière légèrement différente de gérer l’emplacement de python et son mode d’exécution, comme indiqué dans cette réponse .
Cette réponse suppose que le module venv
est utilisé et qu'il a été installé à la suite de la documentation .
Remarque: certaines distributions Linux regroupent le module venv dans un package séparé: Ubuntu et Debian
Si l'environnement virtuel a été installé dans un dossier de projet appelé my_project_dir
en exécutant python -m venv my_project-venv
à partir de ce dossier, l'environnement virtuel se trouvera dans un nouveau dossier créé par le module:
my_project_dir
│
┝━ my_project-venv
Sous Windows, avec Python 3.7.1, les fichiers du dossier my_project-venv
ressembleront probablement à ceci:
my_project-venv
│
┝━ Include
┝━ Lib
┝━ Scripts
│ ┝━ ...
│ ┝━ activate.bat
│ ┝━ Activate.ps1
│ ┝━ deactivate.bat
│ ┕━ ...
│
┕━ pyvenv.cfg
L'environnement virtuel peut être démarré en exécutant le script activate.bat
ou Activate.ps1
, selon que/ cmd
ou PowerShell est utilisé :
:: Using cmd.exe
cd my_project_dir
.\my_project-venv\Scripts\activate.bat
# Using PowerShell
cd my_project_dir
.\my_project-venv\Scripts\Activate.ps1
Note: Ces scripts ne gardent pas le Shell ouvert s'ils sont exécutés en double-cliquant dessus. Lancez un shell, puis exécutez-les en tapant les commandes ci-dessus, avec les noms de dossier modifiés pour votre projet
Sur la plupart des autres systèmes d'exploitation, le dossier de l'environnement virtuel ressemblera à ceci:
my_project-venv
│
┝━ bin
│ ┝━ ...
│ ┝━ activate
│ ┝━ activate.csh
│ ┝━ activate.fish
│ ┕━ ...
│
┝━ include
┝━ lib
┝━ lib64
┕━ pyvenv.cfg
Ensuite, à partir de toute coquille autre que csh
ou poisson , activez l'environnement en:
# Most operating systems
cd my_project_dir
. my_project-venv/bin/activate
Pour csh
et fish
, il existe des scripts spécifiques à Shell permettant d'activer l'environnement virtuel (activate.csh
et activate.fish
, respectivement) et ils peuvent être exécutés comme le script activate
.
Une fois que l’environnement virtuel a été activé sur tous les systèmes d’exploitation, les opérations suivantes démarreront IDLE avec l’accès aux packages installés dans cet environnement:
python -m venv idlelib.idle
Sous Windows, un script Python exécuté à partir de la ligne de commande comme celui-ci some_script.py
peut être exécuté par un autre interpréteur Python que celui utilisé lors de l'utilisation de la commande python some_script.py
(dépend de l'association de fichiers py
). Si vous voulez éviter ce problème, il est préférable de créer un fichier de commandes idle.bat
avec le contenu python -c "from idlelib.PyShell import main; main()"
et de le placer dans le dossier Scripts
du virtualenv. En outre, comme d’autres utilisateurs, inactif a besoin des dossiers tcl
et tk
pour fonctionner. La solution la plus simple consiste à créer des liens symboliques de virtualenv à l’installation base Python, comme ceci.
(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tcl8.5 "c:\Program Files\Python\2.7\tcl\tcl8.5"
symbolic link created for tcl8.5 <<===>> c:\Program Files\Python\2.7\tcl\tcl8.5
(2.7) c:\python\virtualenv\2.7\Lib>mklink /d tk8.5 "c:\Program Files\Python\2.7\tcl\tk8.5"
symbolic link created for tk8.5 <<===>> c:\Program Files\Python\2.7\tcl\tk8.5
Rassembler quelques réponses et voici comment je fais cela sous Windows avec un fichier de commandes entièrement fonctionnel.
Faites idle.bat dans le répertoire Scripts de votre virtualenv. Il créera (sauf s'ils existent) les deux liens vers tcl et tk (version 8.5 au moment de l'écriture) et les mettra dans le répertoire Lib de virtualenv, puis se déclenchera inactif. Copiez et collez ce code exactement dans un éditeur. Modifiez les noms de chemin de votre installation actuelle de virtualenv et Python (le mien est la norme pour la version 2.7), puis enregistrez-la dans Scripts/idle.bat.
IF EXIST C:\<path to current virtualenv>\Lib\tcl8.5 (
REM do nothing
) ELSE (
mklink /d C:\<path to current virtualenv>\Lib\tcl8.5 "c:\Python27\tcl\tcl8.5"
)
IF EXIST C:\<path to current virtualenv>\Lib\tk8.5 (
REM do nothing
) ELSE (
mklink /d C:\<path to current virtualenv>\Lib\tk8.5 "c:\Python27\tcl\tk8.5"
)
python -c "from idlelib.PyShell import main; main()"
Exécutez le script avec Powershell (RUN AS ADMIN!) Pour ouvrir inactif.
cd c:\<path to current virtualenv>\
./Scripts/idle.bat
@ Biomed Je suis sur Windows et j'essayais cela. Dans mon dossier python2.6, je devais copier les dossiers python26/tcl/tcl8.5 et python/tcl/tk8.5 dans python26/Lib, puis créer le script ci-dessus dans le dossier de scripts de virtualenv. A bien fonctionné.
Python 3.6 modernisé et remaniéidlelib
. Cette modification incluait le changement de nom de plusieurs méthodes. Pour cette raison, idlelib.PyShell
doit maintenant être accessible avec idlelib.pyshell
. L'extrait suivant est basé sur la réponse acceptée et devrait fonctionner pour toute version de Python:
#!/usr/bin/env python
"""Simple script to run Idle from a venv in PyCharm."""
try:
# Import for Python pre 3.6
from idlelib.PyShell import main
except ModuleNotFoundError:
# Import for Python version 3.6 and later
from idlelib.pyshell import main
if __== '__main__':
main()
Pour moi, lancer quelque chose comme ça marche (terminal Linux):
source venv/bin/activate && python `which idle` &
(venv est le chemin de votre venv évidemment)
J'utilise Ubuntu 15.04 système d'exploitation. J'ai installé des paquets en utilisant virtualenv .
Donc, pour exécuter les fichiers dans virtualenv y compris ces paquets, j'utilise les commandes suivantes dans terminal
(Le nom de mon environnement virtuel est venv ):
#Activate the virtualenv venv
source venv/bin/activate
#To Run IDLE in virtualenv venv
python -m idlelib
Après avoir exécuté leINACTIF, vous pouvez ouvrir le fichier en utilisant le raccourci clavier ctrl + o .