2009-10-04 7 views

Répondre

1

Virtualenv est la solution de choix sur les plateformes Unix et Mac.

virtualenv est un outil pour créer des environnements de python isolées.

Le problème de base adressé est l'une des dépendances et versions, et autorisations indirectes. Imaginez-vous avoir une application qui a besoin de la version 1 de LibFoo, mais une autre application nécessite la version 2. Comment pouvez-vous utiliser ces deux applications? Si vous installez tout en /usr/lib/python2.4/site-packages (ou quel que soit votre emplacement standard de la plate-forme est), il est facile de se retrouver dans une situation où vous involontairement la mise à niveau d'une application qui shouldn » t être mis à jour.

Ou plus généralement, que faire si vous voulez installer une application et laisser être? Si une application fonctionne, toute modification dans ses bibliothèques ou les versions de ces bibliothèques peuvent rompre l'application.

De même, que se passe-t-il si vous ne pouvez pas installer les packages dans le répertoire global site-packages ? Par exemple, sur un hôte partagé .

Je n'ai pas essayé cela, mais la présence de documentation relative à l'utilisation dans Windows me fait penser qu'il fonctionne maintenant sous Windows.

+0

Ok, je pense que c'est la solution que j'attendais, –

0

Pourquoi voulez-vous le faire? Tout ce qui est dans 3.0 est dans 2.6, vous pouvez utiliser les nouvelles fonctionnalités dans 3.0 avec from __future__ import. Exécutez 2.6 jusqu'à ce que vous soyez prêt à passer à la version 3.0 pour tout, puis effectuez une mise à niveau. Vous n'êtes pas destiné à avoir plusieurs versions de Python sur la même machine. Si vous voulez vraiment, vous pouvez spécifier des répertoires d'installation alternatifs, mais je ne vois vraiment pas comment cela vaut le coup.

+1

Intéressant, mais je veux être en mesure d'apprendre la syntaxe 3.0 (print()) etc, mais toujours besoin de maintenir le code 2.5 et 2.6 ... –

+0

-1. Essayez d'importer le _lack_ d'une instruction d'impression. Ou des compréhensions de dictionnaire. – Triptych

+0

@Triptych - point juste. –

9

Aucun problème, chaque version est installée dans son propre répertoire. Sur ma boîte de Windows, j'ai C:\Python26\ et C:\Python31\. Les éléments Start Menu sont également distincts. Utilisez simplement les programmes d'installation standard du langage de programmation Python Official Website ou les distributions prêtes à installer de ActiveState.

Une manière directe de sélectionner la version voulue est de la nommer explicitement sur la ligne de commande.

C:\> C:\Python25\python ver.py 
2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)] 

C:\> C:\Python31\python ver.py 
3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] 

ver.py est:

import sys 
print (sys.version) 
+0

ok. alors quand je cours le programme, je viens de préfixer le chemin, non? Comme c: /python26/python.exe myprog.py Que faites-vous avec l'extension .py? –

+0

Je vous entends. C'est comme ça que je le fais. Le problème réside dans la liaison d'extension. Je souhaite que #! travaillé dans les fenêtres. –

+0

Examinez l'utilisation d'une variable% PATH% env modifiée pour les différents environnements. Peut-être juste c: \ python26 \ python myprog.py – gimel

1

-Vous pourrait utiliser un fichier batch pour lancer avec la version appropriée.

-Eclipse avec pydev vous permet de choisir avec quelle version lancer.

-Re-associer l'extension .py/.pyw avec votre version préférée.

+0

Je pense que je vais aller avec l'association .py avec la version en utilisant ftype sorte de chose mentionné par http://stackoverflow.com/users/124312/zwergner –

1

Intéressant, mais je veux être en mesure d'apprendre la syntaxe 3.0 (impression()) etc, mais encore besoin de maintenir environ 2,5 et 2,6 code ..

Python a __future__ "Future statement definitions", ce qui rend nouvelle fonctionnalités disponibles dans les anciennes versions de Python, la fonction d'impression est l'un d'entre eux:

Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51) 
>>> from __future__ import print_function 
>>> print("Example", end=" Hurray!\n") 
Example Hurray! 

un autre grand changement Python 3.0 est la chaîne par défaut devient Unicode:

>>> from __future__ import unicode_literals 
>>> type('abc') 
<type 'unicode'> 
>>> 'a' 
u'a' 

La plupart des autres font maintenant partie de Python 2.6, donc ne sont pas d'intérêt (comme le with_statement). Le seul que je n'ai pas mentionné est from __future__ import braces pour permettre "C like" if(){} accolades

Questions connexes