it-swarm.com.de

Kann ich eine andere Version von Python auf Virtualenv installieren?

Ich habe ein geteiltes Konto in einem Webhosting, auf dem Python 2.4 installiert ist, mein Code ist jedoch nicht mit 2.4 kompatibel. Ist es möglich, Python 2.6 direkt auf Virtualenv zu installieren? 

Hinweis: Ich habe keine Erlaubnis, es auf dem gemeinsam genutzten Server zu installieren.

139
André

Hier sind die Optionen für 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) Sie möchten Python in einem Verzeichnis installieren, das Sie auch schreiben können.

Sie können den Anweisungen here folgen.

Für 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.tgz
cd Python-2.7.1

make clean
./configure --prefix=/home/${USER}/.localpython
make
make install

2) installiere 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) Erstellen Sie eine virtuelle Szene mit Ihrem lokalen Python
virtualenv docs

mkdir /home/${USER}/virtualenvs
cd /home/${USER}/virtualenvs
~/.localpython/bin/virtualenv py2.7 --python=/home/${USER}/.localpython/bin/python2.7

4) Aktiviere die Umgebung

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

5) Check

(py2.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()

(py2.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.
>>> 
244
DTing

Voraussetzungen:

  1. Sudo easy_install virtualenv
  2. Sudo pip install virtualenvwrapper

Installieren von Virtualenv mit Python2.6:

  1. Sie können manuell eine andere Version von Python unter /usr/local oder an einem anderen Ort herunterladen, erstellen und installieren. 
  2. Wenn es sich nicht um /usr/local handelt, fügen Sie es Ihrem PFAD hinzu. 
  3. Laden Sie Ihre Shell erneut, um den aktualisierten PATH abzurufen.
  4. Von diesem Zeitpunkt an sollten Sie die folgenden zwei Python-Binaries von Ihrer Shell aus aufrufen können python2.5 und python2.6
  5. Erstellen Sie eine neue Instanz von virtualenv mit python2.6

    mkvirtualenv --python=python2.6 yournewenv

20
Thierry Lam

Ich verwende den virtualenvwrapper und möchte $ PATH nicht ändern.

$ which python3
/usr/local/bin/python3

$ mkvirtualenv --python=/usr/local/bin/python3 env_name
4
laike9m

Diese Prozedur installiert Python2.7 überall und beseitigt alle absoluten Pfadangaben in Ihrem env-Ordner (wird von virtualenv verwaltet). Auch Virtualenv ist nicht absolut installiert. 

Theoretisch können Sie also das Verzeichnis der obersten Ebene in einem Tarball ablegen, verteilen und alles ausführen, das innerhalb des Tarballs auf einem Computer konfiguriert ist, auf dem kein Python (oder Abhängigkeiten) installiert ist.

Kontaktieren Sie mich bei Fragen. Dies ist nur ein Teil eines laufenden, größeren Projekts, das ich entwickle. Nun für den Tropfen ...

  1. Umgebungsordner einrichten.

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. Holen Sie sich Python-2.7.3 und virtualenv ohne irgendeine Form der Root-Betriebssysteminstallation.

    $ 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. Extrahieren Sie Python-2.7.3 und installieren Sie es in das Verzeichnis pyenv. make clean ist optional, wenn Sie dies ein zweites, drittes, ntes Mal machen ...

    $ 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. Erstellen Sie Ihre Virtualenv

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  5. Fixiere den Symlink auf python2.7 innerhalb von env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. Beheben Sie die verbleibenden Python-Symlinks in env. Sie müssen die symbolisch verknüpften Verzeichnisse löschen und wie oben beschrieben neu erstellen. Hier ist auch die Syntax zum Erzwingen der direkten Erstellung von symbolischen Links.

    $ 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. Prüfung

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

Aloha.

4
azatar

Der übliche Ansatz besteht darin, die Quelle herunterzuladen, lokal zu installieren und zu installieren (jedoch nicht direkt in virtualenv). Anschließend wird eine neue virtualenv mit dieser lokalen Python-Installation erstellt. Auf einigen Systemen kann es möglich sein, einen vorgefertigten Python herunterzuladen und zu installieren, anstatt vom Quellcode aus zu bauen. 

3
user227667

Sie können pyenv verwenden.

Es gibt viele verschiedene Versionen: Anaconda, Jython, Pypy usw.

https://github.com/yyuu/pyenv

Installation so einfach wie pyenv install 3.2.6

pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  2.5.3
  2.5.4
  2.5.5
  2.5.6
  2.6.6

...

2
Ezhik

Nun, ein Tag, der einfachste Weg, eine neuere Version von Python zu finden, ist die Installation über Conda in einer Conda-Umgebung.


Installiere conda (du brauchst dafür möglicherweise eine virtualenv)

pip install conda

Installation einer neuen Python-Version in einer Conda-Umgebung

Ich füge diese Antwort hier hinzu, da kein manueller Download erforderlich ist. conda erledigt das für Sie.

Erstellen Sie nun eine Umgebung für die gewünschte Python-Version. In diesem Beispiel werde ich 3.5.2 verwenden, da es sich um die aktuellste Version zur Zeit des Schreibens (August 2016) handelt.

conda create -n py35 python=3.5.2

Erstellt eine Umgebung für Conda, um Pakete zu installieren


Um diese Umgebung zu aktivieren (ich gehe davon aus, dass Linux ansonsten die conda docs überprüft):

source activate py35

Installieren Sie jetzt, was Sie benötigen, entweder über Pip oder Conda in der Umgebung (Conda hat eine bessere Unterstützung für Binärpakete).

conda install <package_name>
2
Bryce Guinta

Obwohl in der Frage ausdrücklich die Installation von 2.6 beschrieben wird, möchte ich den oben genannten hervorragenden Antworten einige wichtige Punkte hinzufügen, falls jemand darauf stößt. Für das Protokoll war mein Fall, dass ich versuchte, 2.7 auf einer Ubuntu 10.04-Box zu installieren.

Erstens ist meine Motivation für die in allen Antworten beschriebenen Methoden, dass die Installation von Python von deadsnakes ppa's ein totaler Fehlschlag war. Der Bau eines lokalen Python ist also der richtige Weg. 

Nachdem ich es versucht hatte, hielt ich es für angemessen, die Standardinstallation von pip (mit Sudo apt-get install pip) zu verwenden. Das ist leider falsch. Es stellte sich heraus, dass ich alle kurzen Probleme mit unangenehmen Problemen bekam und letztendlich keine Virtualenv erstellen konnte. 

Daher empfehle ich dringend, pip lokal installieren mit wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user. Diese verwandte Frage gab mir diesen Hinweis.

Wenn dies nicht funktioniert, stellen Sie sicher, dass libssl-dev für Ubuntu oder openssl-dev für CentOS installiert ist. Installieren Sie sie mit apt-get oder yum und erstellen Sie dann Python neu (keine Notwendigkeit, etwas zu entfernen, falls bereits installiert, tun Sie dies oben). get-pip beschwert sich darüber, Sie können dies überprüfen, indem Sie import ssl auf einer py-Shell ausführen.

Vergessen Sie nicht, .local/bin und lokalen Python als Pfad zu deklarieren. Überprüfen Sie dies mit which pip und which python.

1
Wtower

Nein, aber Sie können einen isolierten Python Build (wie ActivePython ) in Ihrem $HOME Verzeichnis installieren.

Dieser Ansatz ist der schnellste und erfordert nicht, dass Sie Python selbst kompilieren.

(Als Bonus können Sie auch ActiveStates Binärpaket-Manager ) verwenden.

0

Ich habe keine passende Antwort gefunden, also hier mein Take, der auf @toszter answer aufbaut, aber verwendet kein System Python (und Sie wissen vielleicht, dass es nicht immer eine gute Idee ist, setuptools und virtualenv auf Systemebene zu installieren bei vielen Python-Konfigurationen):

#!/bin/sh

mkdir python_ve
cd python_ve

MYROOT=`pwd`
mkdir env pyenv dep

cd ${MYROOT}/dep
wget https://pypi.python.org/packages/source/s/setuptools/setuptools-15.2.tar.gz#md5=a9028a9794fc7ae02320d32e2d7e12ee
wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz
xz -d Python-2.7.9.tar.xz

cd ${MYROOT}/pyenv
tar xf ../dep/Python-2.7.9.tar
cd Python-2.7.9
./configure --prefix=${MYROOT}/pyenv && make -j 4 && make install

cd ${MYROOT}/pyenv

tar xzf ../dep/setuptools-15.2.tar.gz

cd ${MYROOT}

pyenv/bin/python dep/virtualenv.py --no-setuptools --python=${MYROOT}/pyenv/bin/python --verbose env
env/bin/python pyenv/setuptools-15.2/setup.py install
env/bin/easy_install pip

echo "virtualenv in ${MYROOT}/env"

Der Trick, das Chicken-Egg-Problem zu lösen, besteht darin, zuerst virtualenv ohne setuptools zu erstellen, da es sonst fehlschlägt (pip kann nicht gefunden werden). Es ist zwar möglich, das Rohr/Rad direkt zu installieren, aber irgendwie war mir easy_install das erste, was mir in den Sinn kam. Das Skript kann auch verbessert werden, indem konkrete Versionen berücksichtigt werden.

NB. Xz im Skript verwenden.

0
Roman Susi

Erstmal Danke, DTing, für eine großartige Antwort. Es ist ziemlich perfekt.

Für diejenigen, die unter GCC-Zugriff im Shared Hosting leiden, sollten Sie für ActivePython anstelle von normalem Python, wie Scott Stafford erwähnt, verwenden. Hier sind die Befehle dafür.

wget http://downloads.activestate.com/ActivePython/releases/2.7.13.2713/ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz

tar -zxvf ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785.tar.gz

cd ActivePython-2.7.13.2713-linux-x86_64-glibc-2.3.6-401785

./install.sh

Sie werden nach dem Pfad zum Python-Verzeichnis gefragt. Eingeben

../../.localpython

Ersetzen Sie einfach oben als Schritt 1 in der Antwort von DTing und fahren Sie danach mit Schritt 2 fort. Bitte beachten Sie, dass sich die ActivePython-Paket-URL mit der neuen Version ändern kann. Sie können immer eine neue URL von hier erhalten: http://www.activestate.com/activepython/downloads

Basierend auf der URL müssen Sie den Namen von tar und den Befehl cd basierend auf der empfangenen Datei ändern.

0