Comment lancer python Idle à partir d'un environnement virtuel (virtualenv)
j'ai un colis que j'ai installé à partir d'un environnement virtuel. Si je lance juste l'interpréteur python, ce paquet peut très bien être importé. Cependant, si je lance Idle, ce paquet ne peut pas être importé (puisqu'il n'est disponible que dans un virtualenv particulier et non global). Comment puis-je lancer Idle à partir d'un virtualenv, de sorte que tous les paquets du virtualenv soient disponibles?
8 réponses
IDLE est essentiellement
from idlelib.PyShell import main
if __name__ == '__main__':
main()
Vous pouvez donc le lancer vous-même à moins que vous n'ayez construit le virtualenv sans paquets par défaut.
je lance l' .\(virtualenv dir)\Scripts\activate.bat
script à partir de la ligne de commande, puis faire:
python -m idlelib.idle
sous Windows, un script Python s'exécute à partir d'une ligne de commande comme celle-ci some_script.py
peut être exécuté par un autre interpréteur Python que celui utilisé avec python some_script.py
commande (cela dépend de l' py
association de fichiers). Si l'on veut éviter ce problème, il est préférable de créer un fichier batch idle.bat
le contenu python -c "from idlelib.PyShell import main; main()"
et le placer dans le Scripts
dossier dans le virtualenv. En outre, comme d'autres a noté des besoins inactifs à la fois tcl
et tk
dossiers à travailler. La solution la plus simple est de créer des liens symboliques de virtualenv à la base installation de Python comme ceci
(2.7) c:\python\virtualenv.7\Lib>mklink /d tcl8.5 "c:\Program Files\Python.7\tcl\tcl8.5"
symbolic link created for tcl8.5 <<===>> c:\Program Files\Python.7\tcl\tcl8.5
(2.7) c:\python\virtualenv.7\Lib>mklink /d tk8.5 "c:\Program Files\Python.7\tcl\tk8.5"
symbolic link created for tk8.5 <<===>> c:\Program Files\Python.7\tcl\tk8.5
Mettre un peu de réponses ensemble, et voici comment je le fais sur la Fenêtre avec un fichier de commandes.
Faire inactif.bat dans le répertoire de Scripts de votre virtualenv. Il va créer (sauf s'ils existent) à la fois des liens vers tcl et tk (version 8.5 au moment de l'écriture) et les mettre dans le répertoire Lib de virtualenv puis il déclenche idle. Copiez et collez ce code dans un éditeur. Changez les noms de chemin pour votre virtualenv actuel et Python installer (la mine est la norme pour 2.7) puis l'enregistrer dans Scripts/inactif.chauve.
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 (exécutez en tant qu'administrateur! pour ouvrir inactif.
cd c:\<path to current virtualenv>\
./Scripts/idle.bat
@biomed je suis sur Windows et j'ai essayé cela. Dans mon python2.6 dossier j'ai dû copier le python26/tcl/tcl8.5 et python / tcl / tk8.5 dossiers vers python26 / Lib et ensuite j'ai créé le script ci-dessus dans le dossier scripts de ma virtualenv. A très bien fonctionné.
Pour moi, le lancement de quelque chose comme cela fonctionne, tout simplement (terminal Linux):
source venv/bin/activate && python `which idle` &
(venv est le chemin d'accès à votre venv évidemment)
j'utilise Ubuntu 15.04 système d'exploitation. J'ai installé quelques paquets en utilisant virtualenv.
Donc, pour exécuter les fichiers à l'intérieur de virtualenv y compris les paquets que j'utilise les commandes suivantes dans le terminal
(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 le IDLE, vous pouvez ouvrir le fichier en utilisant ctrl+o raccourci clavier.
Python 3.6 modernisé et remaniéeidlelib
. Ce changement, notamment le changement de nom de plusieurs méthodes. De ce fait, idlelib.PyShell
doit maintenant être accédé avec idlelib.pyshell
. L'extrait suivant est basé sur la réponse acceptée et devrait fonctionner pour n'importe quelle 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 __name__ == '__main__':
main()