2

重複の可能性:
Python - 別のバージョンの Python を Virtualenv にインストールできますか?

私の(virtualenvがアクティブ化された)envフォルダー内では、python2.7フォルダーにシステムpythonインストールの 絶対パスへのシンボリックリンクがあるように見えます。

これは理想的ではありません。

ローカル パスからインストールし、virtualenv を使用してフォルダーenvに環境を設定する場合でも、Python へのパスは絶対パスであり、OS 環境への依存関係が確立されます。この依存関係を取り除き、Python インタープリターとそれに依存するすべてのソフトウェアを完全に独立させたいと考えています。

システム フォルダへのシンボリック リンクなしで、STAND-ALONE インストールとして python2.6 を env ツリーに含めるとします。

並外れた非連鎖というこの偉業をどのように達成するのでしょうか?

$ > pwd 
/Users/foo/development/v1/bar/env
(env)
$ > ls -l lib/python2.7/
total 920
lrwxr-xr-x  1 foo  staff     82 Oct 15 16:48 UserDict.py -> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py
...
lrwxr-xr-x  1 foo  staff     85 Oct 15 16:48 _weakrefset.py -> /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_weakrefset.py

ご協力ありがとうございました。

編集: さらに、virtualenv (ローカルの python インストールを含む) を再配置可能にすることが最も理想的です。

4

2 に答える 2

3

更新:「Virtualenvに別のバージョンのPythonをインストールすることは可能ですか?」も参照してください。

@millimooseらに感謝します。

これが私がやったことです。具体的には。今後問題が発生した場合は更新します。

  1. 環境フォルダを設定します。

    $ mkdir env
    $ mkdir pyenv
    $ mkdir dep
    
  2. ルートOSをインストールせずにPython-2.7.3とvirtualenvを入手してください。

    $ 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. Python-2.7.3を抽出してディレクトリにインストールしpyenvます。make cleanこれを2回目、3回目、N回目に行う場合はオプションです...

    $ 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. virtualenvを作成します

    $ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
    
  5. 内のpython2.7へのシンボリックリンクを修正env/include/

    $ ls -l env/include/
    $ cd !$
    $ rm python2.7
    $ ln -s ../../pyenv/include/python2.7 python2.7
    $ cd ../../
    
  6. env内の残りのPythonシンボリックリンクを修正します。上記のように、シンボリックにリンクされたディレクトリを削除して再作成する必要があります。また、インプレースシンボリックリンクの作成を強制する構文は次のとおりです。

    $ 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. テスト

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

アロハ。

于 2012-10-17T22:51:05.030 に答える
1
  1. pythonbrewを使用して、分離された Python インストールを取得します。
  2. その Python インストールを使用して、仮想環境を開始します。
  3. 仮想環境を再配置可能にします。
于 2012-10-16T16:49:34.173 に答える