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?

34
demandé sur Kevin Le - Khnle 2011-02-07 20:01:12

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.

34
répondu 9000 2011-02-07 18:34:38

je lance l' .\(virtualenv dir)\Scripts\activate.bat script à partir de la ligne de commande, puis faire:

python -m idlelib.idle

cette réponse.

34
répondu Matthew Willcockson 2017-05-23 12:02:02

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
9
répondu Piotr Dobrogost 2012-04-28 19:50:55

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
3
répondu srock 2014-09-10 19:31:39

@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é.

2
répondu Tim 2011-05-05 14:28:15

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)

1
répondu yan 2015-09-14 12:40:01

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.

1
répondu arsho 2016-07-20 14:40:44

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()
1
répondu Paul Wicking 2018-02-09 18:21:25