与virtualenv一起使用不同的Python版本

与virtualenv一起使用不同的Python版本,python,virtualenv,virtualenvwrapper,Python,Virtualenv,Virtualenvwrapper,我有一个Debian系统,目前正在运行Python2.5.4。我正确安装了virtualenv,一切正常。是否有可能将virtualenv与不同版本的Python一起使用 我编译了Python2.6.2,并希望将其与一些virtualenv一起使用。是否足以覆盖二进制文件?或者我必须更改库的某些内容吗?在创建virtualenv实例时,只需使用--python(或short-p)选项来指定要使用的python可执行文件,例如: virtualenv --python=/usr/bin/pytho

我有一个Debian系统,目前正在运行Python2.5.4。我正确安装了virtualenv,一切正常。是否有可能将virtualenv与不同版本的Python一起使用

我编译了Python2.6.2,并希望将其与一些virtualenv一起使用。是否足以覆盖二进制文件?或者我必须更改库的某些内容吗?

在创建virtualenv实例时,只需使用
--python
(或short
-p
)选项来指定要使用的python可执行文件,例如:

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
virtualenv--python=/usr/bin/python2.6
注意:对于Python3.3或更高版本,请参阅下面的Aelfinn。

virtualenv--Python=/usr/bin/python2.6

在Windows for me下,此功能:

virtualenv --python=c:\Python25\python.exe envname
没有
python.exe
我得到了
WindowsError:[错误5]访问被拒绝

我已经用virtualenv 1.6.1安装了Python2.7.1,我想要Python2.5.2。

当您在共享托管环境中,需要从源代码安装和编译python,然后从python版本创建
venv
时,可以遵循这些步骤。对于Python 2.7.9。你可以按照以下思路做一些事情:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install
虚拟环境

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

当然,这可以适用于您希望复制您的工作和部署环境的任何情况

假设您当前在virtualenv中安装了python 2.7。但是,如果要使用
python3.2
,则必须使用以下内容更新:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通过以下方式激活您的virtualenv:

然后在shell中执行:
python--version
,检查您的版本现在是否已更新。

Mac OSX 10.6.8(雪豹):

1) 当您执行
pip安装virtualenv
时,pip命令将与您的一个python版本相关联,并且
virtualenv
将安装到该版本的python中。你能行

 $ which pip   
看看那是什么版本的python。如果您看到以下内容:

 $ which pip
 /usr/local/bin/pip
然后做:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
您可以在输出中看到python版本

默认情况下,这将是用于您创建的任何新环境的python版本。但是,您可以使用
-p标志指定安装在计算机上的任何python版本,以便在新环境中使用:

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
virtualenv my_env
将在当前目录中创建一个文件夹 将包含Python可执行文件和pip的副本 [命令]可用于安装其他软件包

virtualenv
只需将python从计算机上的某个位置复制到新创建的my_env/bin/目录中即可

2) 系统python位于
/usr/bin
中,而我安装的各种python版本默认安装在:

 /usr/local/bin
3) 我安装的各种python都有类似于
python2.7
python3.2
的名称,我可以使用这些名称而不是完整路径

==========虚拟说唱歌手========= 1) 我在让虚拟说唱歌手工作时遇到了一些问题。这就是我最后输入的
~/.bash\u profile

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://stackoverflow.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
2)
-p选项
与virtualenvwrapper的工作方式不同:我必须指定要在新环境中使用的python解释器的完整路径(当我不想使用默认python版本时):


与virtualenv不同,virtualenvwrapper将在$WORKON_HOME环境变量指定的位置创建环境。这将使您的所有环境保持在一个位置。

在mac上,我使用pyenv和virtualenvwrapper。我必须创建一个新的虚拟电视。如果您使用mac电脑,您需要自制软件,我假设您已经安装了该软件,但只是为了好玩:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}
我还首先冻结了我的需求,这样我就可以简单地在新的virtualenv中重新安装:

pip install -r requirements.txt

您可以使用所需的python版本调用
virtualenv
。例如:

python3 -m virtualenv venv
或者直接指向您的虚拟路径。e、 g.对于windows:

c:\Python34\Scripts\virtualenv.exe venv
通过运行:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

您可以看到安装在虚拟环境中的python版本

它适合我

sudo apt-get install python3-minimal

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
pyvenv /path/to/new/virtual/environment

-p
方法运行良好,但您必须记住每次都要使用它。如果您的目标通常是切换到较新版本的Python,那么这是一种痛苦,也可能导致错误

另一个选项是设置与
-p
执行相同操作的环境变量。通过
~/.bashrc
文件或管理登录会话的环境变量的任何地方设置:

export VIRTUALENV_PYTHON=/path/to/desired/version

然后,
virtualenv
将在您不在命令行上指定
-p
的任何时候使用它。

使用命令替换为您查找python2更容易:

virtualenv-p$(哪个python2)

或者在使用VirtualNVRapper时:

mkvirtualenv-p$(哪个python2)

自Python 3以来,使用以下命令创建虚拟环境:

python3 -m venv <myenvname>

但是自从Python 3.6以来,它就被弃用了。

有一种更简单的方法

virtualenv venv --python=python2.7
多亏了一条注释,只有在系统级安装了python2.7(例如/usr/bin/python2.7)的情况下,这才有效

否则,如果您使用的是自制软件,则可以使用路径来提供所需内容

virtualenv venv --python=/usr/local/bin/python
您可以使用找到python安装的路径

which python
这也适用于Python3

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
最终浓缩为:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`
在windows linux子系统中:
  • 为python3创建环境:

    virtualenv --python=/usr/bin/python3 env
    
  • 激活它:

    source env/bin/activate
    

  • ,上述答案是正确的,在基于Unix的系统上运行良好,如Linux&MAC OS X

    我尝试使用以下命令为Python2Python3创建virtualenv

    这里我使用了venv2venv3作为的名称
    source env/bin/activate
    
    MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
    Running virtualenv with interpreter /usr/local/bin/python2
    New python executable in /Users/admin/venv2/bin/python
    Installing setuptools, pip, wheel...done.
    MacBook-Pro-2:~ admin$ 
    MacBook-Pro-2:~ admin$ ls venv2/bin/
    activate        easy_install        pip2.7          python2.7
    activate.csh        easy_install-2.7    python          wheel
    activate.fish       pip         python-config
    activate_this.py    pip2            python2
    MacBook-Pro-2:~ admin$ 
    
    MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
    Running virtualenv with interpreter /usr/local/bin/python3
    Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
    New python executable in /Users/admin/venv3/bin/python3
    Also creating executable in /Users/admin/venv3/bin/python
    Installing setuptools, pip, wheel...done.
    MacBook-Pro-2:~ admin$ 
    MacBook-Pro-2:~ admin$ ls venv3/bin/
    activate        easy_install        pip3.6          python3.6
    activate.csh        easy_install-3.6    python          wheel
    activate.fish       pip         python-config
    activate_this.py    pip3            python3
    MacBook-Pro-2:~ admin$ 
    
    MacBook-Pro-2:~ admin$ which python2
    /usr/local/bin/python2
    MacBook-Pro-2:~ admin$ 
    MacBook-Pro-2:~ admin$ which python3
    /usr/local/bin/python3
    MacBook-Pro-2:~ admin$ 
    
    py -3.4x32 -m venv venv34
    
    py -2.6.2 -m venv venv26
    
     $ python3 -m pip install virtualenv
     $ python3 -m virtualenv --python=python2 vp27
     $ source vp27/bin/activate
     (vp27)$ python --version
     Python 2.7.14
    
    virtualenv -p python3 myenv
    
    python3.7 -m venv myenv
    
    (myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
    
    $ python --version
    Python 3.7.3
    
    rm -rf bin
    
    $ /usr/bin/python3.8 -m venv python38-env
    
    $ source python38-env/bin/activate
    
    python -V = python 3.8
    
    cd /mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
    time ./configure                 ## 17 sec
    time make                        ## 1 min 51 sec
    time sudo make install           ## 18 sec
    time make clean                  ## 0.3 sec
    
    $ which python
    /usr/bin/python
    
    $ python --version
    Python 3.8.0
    
    $ which python3.7
    /usr/local/bin/python3.7
    
    $ python    ## Python 3.8 [system / env]
    Python 3.8.0 (default, Oct 23 2019, 18:51:26) 
    [GCC 9.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    
    $ python3.7    ## newly-installed Python 3.7 package
    Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
    [GCC 9.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> print(sys.version)
    3.7.4 (default, Nov 20 2019, 11:36:53) 
    [GCC 9.2.0]
    >>>
    
    $ python3.7 --version                                                                                                 
    Python 3.7.4
    
    python3.7 -m venv ~/venv/py3.7      ## create Python 3.7-based venv
    source ~/venv/py3.7/bin/activate    ## activate that venv
    deactivate                          ## deactivate that venv (when done, there)
    
    alias p37='echo "   [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
    
    $ p37                                                                                                                 
    [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]
    
    (py3.7)$ python --version
    Python 3.7.4
    
    (py3.7)$ python
    Python 3.7.4 (default, Nov 20 2019, 11:36:53) 
    [GCC 9.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys
    >>> print(sys.version)
    3.7.4 (default, Nov 20 2019, 11:36:53) 
    [GCC 9.2.0] 
    >>>
    
    py -[my version] -m venv env
    
    py -3.7 -m venv env
    ./env/Scripts/activate
    
    python=python3.6
    
    virtualenv venv --python=pythonX.X
    
    virtualenv --python=python3.8 env/place/you/want/to/save/to
    
    python3.8 -m venv env/place/you/want/to/save/to