153 votes

Est-il possible d'installer une autre version de Python pour Virtualenv?

Je partage un compte d'hébergement web qui a Python 2.4 installé, mais mon code n'est pas compatible avec la 2.4. Est-il possible d'installer la version 2.6 de Python directement à Virtualenv?

Note: je n'ai pas l'autorisation pour l'installer sur le serveur mutualisé.

259voto

DTing Points 12969

Voici les options pour virtualenv

$ virtualenv
You must provide a DEST_DIR
Usage: virtualenv [OPTIONS] DEST_DIR

Options:
  --version             show program's version number and exit.
  -h, --help            show this help message and exit.
  -v, --verbose         Increase verbosity.
  -q, --quiet           Decrease verbosity.
  -p PYTHON_EXE, --python=PYTHON_EXE
                        The Python interpreter to use, e.g.,
                        --python=python2.5 will use the python2.5 interpreter
                        to create the new environment.  The default is the
                        interpreter that virtualenv was installed with
                        (/usr/bin/python)
  --clear               Clear out the non-root install and start from scratch
  --no-site-packages    Don't give access to the global site-packages dir to
                        the virtual environment
  --unzip-setuptools    Unzip Setuptools or Distribute when installing it
  --relocatable         Make an EXISTING virtualenv environment relocatable.
                        This fixes up scripts and makes all .pth files
                        relative
  --distribute          Use Distribute instead of Setuptools. Set environ
                        variable VIRTUALENV_USE_DISTRIBUTE to make it the
                        default
  --prompt==PROMPT      Provides an alternative prompt prefix for this
                        environment

1) Ce que vous voulez faire est d'installer python dans un répertoire que vous êtes capable d'écrire aussi.

Vous pouvez suivre les instructions here.

remplacer <user> avec votre nom de compte d'utilisateur

Pour Python 2.7.1
Python source

mkdir ~/src
mkdir ~/.localpython
cd ~/src
wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tgz
tar -zxvf Python-2.7.1.tar.gz
cd Python-2.7.1

make clean
./configure --prefix=/home/<user>/.localpython
make
make install

2) Installer virtualenv
virtualenv source

cd ~/src
wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.5.2.tar.gz#md5=fbcefbd8520bb64bc24a560c6019a73c
tar -zxvf virtualenv-1.5.2.tar.gz
cd virtualenv-1.5.2/
~/.localpython/bin/python setup.py install

3) Créer un virtualenv à l'aide de votre local python
virtualenv docs

mkdir virtualenvs
cd virtualenvs
~/.localpython/bin/virtualenv py2.7 --python=/home/<user>/.localpython/bin/python2.7

4) Activer l'environnement

cd ~/virtualenvs/p2.7/bin
source ./activate

5) Vérifier

(p2.7)$ python
Python 2.7.1 (r271:86832, Mar 31 2011, 15:31:37) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

(p2.7)$ deactivate
$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

20voto

Thierry Lam Points 7888

Pré-requis:

  1. sudo easy_install virtualenv
  2. sudo pip install virtualenvwrapper

L'installation de virtualenv avec Python2.6:

  1. Vous pouvez manuellement télécharger, compiler et installer une autre version de Python pour /usr/local ou à un autre emplacement.
  2. Si c'est un autre endroit autre que /usr/local, l'ajouter à votre CHEMIN d'accès.
  3. Recharger votre shell pour ramasser la mise à jour du CHEMIN.
  4. À partir de ce point, vous devriez être en mesure d'appeler les 2 suivants python fichiers binaires à partir de votre shell python2.5 et python2.6
  5. Créer une nouvelle instance de virtualenv avec python2.6:

    mkvirtualenv --python=python2.6 yournewenv

3voto

toszter Points 329

Cette procédure permet d'installer Python2.7 n'importe où et élimine le chemin d'accès absolu de références au sein de votre env le dossier (géré par virtualenv). Même virtualenv n'est pas installé absolument.

Ainsi, en théorie, vous pouvez supprimer le répertoire de niveau supérieur dans une archive, de diffuser et d'exécuter quoi que ce soit configuré à l'intérieur de l'archive sur une machine qui n'a pas de Python (ou toutes les dépendances) installé.

Me contacter avec toutes les questions. Ce n'est qu'une partie d'un cours, grand projet je suis du génie. Maintenant, pour le drop...

  1. Configurer l'environnement de dossiers.

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. Obtenir Python 2.7.3, et virtualenv sans aucune forme de racine de l'installation de l'OS.

    $ cd dep
    $ wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
    $ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    
  3. Extraire et d'installer Python 2.7.3 dans l' pyenv dir. make clean est facultative si vous faites cela un 2ème, la 3ème, la Énième fois...

    $ tar -xzvf Python-2.7.3.tgz
    $ cd Python-2.7.3
    $ make clean
    $ ./configure --prefix=/path/to/pyenv
    $ make && make install
    $ cd ../../
    $ ls
    dep    env    pyenv
    
  4. Créez votre virtualenv

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  5. Corrigé le lien vers python2.7 env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. Fixer le reste python liens symboliques dans les env. Vous devez supprimer les symboliquement lié répertoires et de les recréer, comme ci-dessus. Aussi, voici la syntaxe à la force du lieu à la création de liens symboliques.

    $ ls -l env/lib/python2.7/
    $ cd !$
    $ ln -sf ../../../pyenv/lib/python2.7/UserDict.py UserDict.py
    [...repeat until all symbolic links are relative...]
    $ cd ../../../
    
  7. Test

    $ python --version
    Python 2.7.1
    $ source env/bin/activate
    (env)
    $ python --version
    Python 2.7.3
    

Aloha.

3voto

thouis Points 1700

L'approche habituelle est de télécharger les sources et les compiler et d'installer en local (mais pas directement dans le virtualenv), puis créer un nouveau virtualenv à l'aide de locaux Python installer. Sur certains systèmes, il peut être possible de télécharger et d'installer un préconstruit python, plutôt que de construire à partir de la source.

0voto

Sridhar Ratnakumar Points 12390

Non, mais vous pouvez installer un cas isolé Python construire (comme ActivePython) en vertu de votre $HOME répertoire.

Cette approche est la plus rapide, et ne nécessite pas de compiler Python vous-même.

(comme un bonus, vous obtenez également l'utilisation d'ActiveState de binary package manager)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X