我在一个拥有安装Python 2.4的web-hosting上有一个共享账户,但我的代码与2.4不兼容。是否可以直接在Virtualenv中安装Python 2.6呢?
注意:我没有权限在共享服务器上安装它。
我在一个拥有安装Python 2.4的web-hosting上有一个共享账户,但我的代码与2.4不兼容。是否可以直接在Virtualenv中安装Python 2.6呢?
注意:我没有权限在共享服务器上安装它。
以下是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) 您想要做的是将Python安装到您可以写入的目录中。
您可以按照此处
的说明进行操作。
对于Python 2.7.1:
Python源代码
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) 安装 virtualenv
virtualenv 源码
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) 使用本地Python创建虚拟环境
virtualenv文档
mkdir /home/${USER}/virtualenvs
cd /home/${USER}/virtualenvs
~/.localpython/bin/virtualenv py2.7 --python=/home/${USER}/.localpython/bin/python2.7
4) 激活环境
cd ~/virtualenvs/py2.7/bin
source ./activate
5) 检查
(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.
>>>
先决条件:
sudo easy_install virtualenv
sudo pip install virtualenvwrapper
使用Python2.6安装virtualenv:
您可以手动下载,构建并安装另一个版本的Python到/usr/local
或其他位置。
如果是除/usr/local
之外的其他位置,请将其添加到PATH。
重新加载您的shell以获取更新的PATH。
从此时起,您应该能够从您的shell调用以下2个Python二进制文件python2.5
和 python2.6
使用python2.6
创建一个新的virtualenv实例:
mkvirtualenv --python=python2.6 yournewenv
通过pyenv完整指南
如果未安装pyenv,则使用pyenv-installer进行安装:
$ curl https://pyenv.run | bash
要使用任何自定义的Python版本,例如3.5.6
,请使用以下方法:
pyenv install 3.5.6
pyenv virtualenv 3.5.6 NAME_OF_YOUR_ENV
cd YOUR_PROJECT_PATH
pyenv local NAME_OF_YOUR_ENV
pip install conda
我在这里添加答案是因为不需要手动下载。 conda
会为您完成。
现在,为您想要的Python版本创建一个环境。在本例中,我将使用3.5.2
,因为它是撰写本文时(2016年8月)的最新版本。
conda create -n py35 python=3.5.2
将创建一个环境,以便conda安装软件包
要激活此环境(假设您使用的是Linux,请参阅conda文档):
source activate py35
现在,在环境中通过pip或者conda安装您需要的内容(conda具有更好的二进制包支持)。
conda install <package_name>
我正在使用virtualenvwrapper,不想修改$PATH,以下是方法:
$ which python3
/usr/local/bin/python3
$ mkvirtualenv --python=/usr/local/bin/python3 env_name
env
文件夹中的任何绝对路径引用(由virtualenv管理)。即使没有安装virtualenv,也可以实现此操作。
因此,从理论上讲,您可以将顶级目录放入tar包中,分发并在未安装Python(或任何依赖项)的机器上运行tar包内配置的任何内容。
如有任何问题,请与我联系。这只是我正在进行的一个大型项目的一部分。现在,为了能够更好地完成该项目...
Set up environment folders.
$ mkdir env
$ mkdir pyenv
$ mkdir dep
Get Python-2.7.3, and virtualenv without any form of root OS installation.
$ 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
Extract and install Python-2.7.3 into the pyenv
dir. make clean
is optional if you are doing this a 2nd, 3rd, Nth time...
$ 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
Create your virtualenv
$ dep/virtualenv.py --python=/path/to/pyenv/bin/python --verbose env
Fix the symlink to python2.7 within env/include/
$ ls -l env/include/
$ cd !$
$ rm python2.7
$ ln -s ../../pyenv/include/python2.7 python2.7
$ cd ../../
Fix the remaining python symlinks in env. You'll have to delete the symbolically linked directories and recreate them, as above. Also, here's the syntax to force in-place symbolic link creation.
$ 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 ../../../
Test
$ python --version
Python 2.7.1
$ source env/bin/activate
(env)
$ python --version
Python 2.7.3
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.6版本,但我想在上面优秀答案的基础上添加一些重要点,以防某些人遇到类似情况。值得一提的是,我的情况是在尝试在Ubuntu 10.04上安装2.7版本。
首先,我采用所有答案中所述方法的原因是从deadsnake's ppa's安装Python完全失败了, 因此本地安装Python是正确的方式。
我曾试过使用默认安装的pip(sudo apt-get install pip
),但这是错误的。事实证明,我遇到了所有种类的问题,最终无法创建虚拟环境。
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py && python get-pip.py --user
。 这个相关问题给了我这个提示。
现在如果这不起作用,请确保已安装Ubuntu的libssl-dev
或CentOS的openssl-dev
。使用apt-get
或yum
安装它们,然后重新构建Python(如果已经安装,则无需删除任何内容,只需在其上进行)。如果get-pip
抱怨,请通过在py shell上运行import ssl
来检查。
最后,别忘了声明 .local/bin
和本地 Python 的路径,使用 which pip
和 which python
进行检查。
我没有找到合适的答案,所以我来分享我的看法。这个方法基于@toszter的回答,但不使用系统Python(你可能知道,在处理多个Python配置时,在系统级别安装setuptools和virtualenv并不总是一个好主意):
#!/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"
在这里打破鸡蛋问题的诀窍是先制作没有setuptools的virtualenv,因为否则会失败(找不到pip)。可能可以直接安装pip / wheel,但某种程度上easy_install是我想到的第一件事。此外,通过分解具体版本,可以改进脚本。
注意:脚本中使用了xz。
./configure --prefix=/home/<user>/.localpython
之前,我不需要执行make clean
,实际上make clean
返回了错误。2.virtualenv name -p=/python/path
没有起作用,而是virtualenv name -p /python/path
生效了。我猜这是由于virtualenv版本造成的。谢谢! - zzartcurl gcc build-essential libncursesw5-dev libreadline5-dev libssl-dev libgdm-dev libbz2-dev libc6-dev libsqlite3-dev tk-dev
。 - Claudiusource
是 Bash 的专有名词。POSIX 的等效命令是.
。 - l0b0