与virtualenv一起使用不同的Python版本
我有一个Debian系统,目前正在运行Python2.5.4。我正确安装了virtualenv,一切正常。是否有可能将virtualenv与不同版本的Python一起使用 我编译了Python2.6.2,并希望将其与一些virtualenv一起使用。是否足以覆盖二进制文件?或者我必须更改库的某些内容吗?在创建virtualenv实例时,只需使用与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
--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
我尝试使用以下命令为Python2和Python3创建virtualenv
这里我使用了venv2和venv3作为的名称
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