Possible Duplicate:
Python - It is possible to install another version of Python to Virtualenv?
在我的(virtualenv 激活的)env 文件夹中,似乎 python2.7 文件夹具有指向我的系统 python 安装的绝对路径的符号链接(symbolic link)。
这并不理想。
即使我从本地路径安装,并使用 virtualenv 在文件夹 env
中设置环境,Python 的路径是绝对路径,并且建立了对操作系统环境的依赖关系。我想摆脱这种依赖,让 python 解释器以及所有依赖它的软件完全独立。
假设我希望将 python2.6 作为独立安装包含在 env 树中,而无需到系统文件夹的符号链接(symbolic link)。
如何完成这一非凡的非关联壮举?
$ > 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 安装)可重定位。
最佳答案
更新:另请参阅 Is it possible to install another version of Python to Virtualenv?
非常感谢@millimoose等人。
这就是我最终所做的,非常具体。如果以后遇到问题我会更新。
设置环境文件夹。
$ mkdir env $ mkdir pyenv $ mkdir dep
获取 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
解压 Python-2.7.3 并将其安装到
pyenv
目录中。如果您第二次、第三次、第 N 次执行此操作,则make clean
是可选的...$ 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
创建您的虚拟环境
$ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
在
env/include/
中修复 python2.7 的符号链接(symbolic link)$ ls -l env/include/ $ cd !$ $ rm python2.7 $ ln -s ../../pyenv/include/python2.7 python2.7 $ cd ../../
修复 env 中剩余的 python 符号链接(symbolic link)。您必须删除符号链接(symbolic link)的目录并重新创建它们,如上所述。另外,这是强制就地符号链接(symbolic link)创建的语法。
$ 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 ../../../
测试
$ python --version Python 2.7.1 $ source env/bin/activate (env) $ python --version Python 2.7.3
阿罗哈。
关于python - 如何在 virtualenv 中 : Install python2. x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906160/