Ulf*_*Ulf 997 python virtualenv virtualenvwrapper
我有一个当前使用python 2.5.4运行的Debian系统.我得到了virtualenv正确安装,一切正常.我是否有可能使用不同版本的Python的virtualenv?
我编译了Python 2.6.2,并希望将它与一些virtualenv一起使用.是否足以覆盖二进制文件?或者我是否必须更改库中的某些内容?
Dan*_*man 1425
只需在创建virtualenv实例时使用--python(或短-p)选项来指定要使用的Python可执行文件,例如:
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
Run Code Online (Sandbox Code Playgroud)
注意对于Python 3.3或更高版本,请参阅下面的Aelfinn的答案.
The*_*inn 233
更新: 对于Python3.6,pyvenv不推荐使用以下脚本.相反,
Python Docs建议使用以下命令创建虚拟环境:
python3 -m venv <myenvname>
Run Code Online (Sandbox Code Playgroud)
对于python3(3.3+),请使用上述方法或脚本 pyvenv命令.
pyvenv /path/to/new/virtual/environment
Run Code Online (Sandbox Code Playgroud)
请注意,venv不允许使用其他版本的Python创建virtualenv.为此,请安装并使用该virtualenv 软件包.
zza*_*art 177
这些是您在共享托管环境中的步骤,需要从源安装和编译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
Run Code Online (Sandbox Code Playgroud)
虚拟环境
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
Run Code Online (Sandbox Code Playgroud)
当然,这适用于您希望复制您工作和部署的确切环境的任何情况.
iEl*_*ric 98
virtualenv --python=/usr/bin/python2.6 <path/to/myvirtualenv>
Run Code Online (Sandbox Code Playgroud)
Dan*_*Lee 88
有一种更简单的方法,
virtualenv venv --python=python2.7
Run Code Online (Sandbox Code Playgroud)
感谢评论,这只有在系统级安装了python2.7时才有效(例如/usr/bin/python2.7).
否则,如果您使用自制程序,则可以使用该路径为您提供所需内容.
virtualenv venv --python=/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
你可以找到python安装的路径
which python
Run Code Online (Sandbox Code Playgroud)
这也适用于python 3.
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
Run Code Online (Sandbox Code Playgroud)
最终冷凝到:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
Run Code Online (Sandbox Code Playgroud)
bal*_*azs 68
在我的Windows下,这适用于:
virtualenv --python=c:\Python25\python.exe envname
Run Code Online (Sandbox Code Playgroud)
没有python.exe我得到WindowsError: [Error 5] Access is denied
我使用virtualenv 1.6.1安装Python2.7.1,我想要python 2.5.2.
7st*_*tud 30
Mac OSX 10.6.8(Snow Leopard):
1)执行此操作时pip install virtualenv,pip命令与您的某个python版本相关联,并virtualenv安装到该版本的python中.你可以做
$ which pip
Run Code Online (Sandbox Code Playgroud)
看看是什么版本的python.如果你看到类似的东西:
$ which pip
/usr/local/bin/pip
Run Code Online (Sandbox Code Playgroud)
然后做:
$ 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
Run Code Online (Sandbox Code Playgroud)
你可以在输出中看到python版本.
默认情况下,这将是用于您创建的任何新环境的python版本.但是,您可以指定计算机上安装的任何版本的python,以便在新环境中使用-p flag:
$ 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.
Run Code Online (Sandbox Code Playgroud)
virtualenv my_env将在当前目录中创建一个包含Python可执行文件的文件夹,以及可用于安装其他包的pip [command]的副本.
http://docs.python-guide.org/en/latest/dev/virtualenvs/
virtualenv 只需将python从计算机上的某个位置复制到新创建的my_env/bin /目录中.
2)系统python是/usr/bin,而我安装的各种python版本默认安装到:
/usr/local/bin
Run Code Online (Sandbox Code Playgroud)
3)我安装的各种蟒蛇的名字都是python2.7或者python3.2,我可以使用这些名称而不是完整的路径.
1)我在使用virtualenvwrapper工作时遇到了一些问题.这就是我最终投入的内容~/.bash_profile:
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
Run Code Online (Sandbox Code Playgroud)
2)-p option与virtualenvwrapper 的工作方式不同:我必须指定要在新环境中使用的python解释器的完整路径(当我不想使用默认的python版本时):
$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate
removes the 'bin' directory of the environment activated with 'source
activate' from PATH.
Run Code Online (Sandbox Code Playgroud)
与virtualenv不同,virtualenvwrapper将在$ WORKON_HOME环境变量指定的位置创建环境.这可以将您的所有环境保存在一个地方.
Vic*_*art 22
[2019 年 11 月] 我需要在基于 Python 3.8 的 Arch Linux 系统上安装 Python 3.7 环境 (env)。Python 3.7 不再在系统上,所以我无法降级 Python 来安装我需要的包。
此外,我想在虚拟环境 (venv) 中使用该包/Python 3.7。我就是这样做的。
下载 Python 版本源文件:
我下载了 Python 3.7.4 源文件
到
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4.tgz
然后我将该存档(源文件)解压缩到
/mnt/Vancouver/apps/python_versions/src/Python-3.7.4/
安装:
[注意:在我的系统环境中,而不是 venv。]
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
Run Code Online (Sandbox Code Playgroud)
检查已安装的 Python 版本:
$ 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
Run Code Online (Sandbox Code Playgroud)
如何为特定的 Python 版本创建 venv:
https://docs.python.org/3/tutorial/venv.html
12.2. 创建虚拟环境
用于创建和管理虚拟环境的模块称为
venv.venv通常会安装您可用的最新版本的 Python。如果您的系统上有多个 Python 版本,您可以通过运行 python3 或您想要的任何版本来选择特定的 Python 版本。要创建虚拟环境,请确定要放置它的目录,然后将 venv 模块作为具有目录路径的脚本运行:
python3 -m venv tutorial-env
tutorial-env如果目录不存在,这将创建目录,并在其中创建包含 Python 解释器、标准库和各种支持文件的副本的目录。...
创建 Python 3.7 venv [在 Python 3.8 操作环境/系统上]:
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)
Run Code Online (Sandbox Code Playgroud)
添加到~/.bashrc:
alias p37='echo " [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
Run Code Online (Sandbox Code Playgroud)
测试 Python 3.7 venv:
$ 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]
>>>
Run Code Online (Sandbox Code Playgroud)
kma*_*o23 21
假设您目前在virtualenv中安装了python 2.7.但是想要使用python3.2,你必须用以下内容更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式激活你的virtualenv:
$ source activate name_of_your_virtualenv
Run Code Online (Sandbox Code Playgroud)
然后执行:python --version在shell中检查您的版本是否现在已更新.
Sac*_*ige 20
对于新手来说,这两个命令应该可以正常工作
virtualenv -p python2 myenv (对于python2)
virtualenv -p python3 myenv (对于python3)
Nim*_*ush 12
你可以调用virtualenv你想要的python版本.例如:
python3 -m virtualenv venv
Run Code Online (Sandbox Code Playgroud)
或者直接指向你的virtualenv路径.例如对于Windows:
c:\Python34\Scripts\virtualenv.exe venv
Run Code Online (Sandbox Code Playgroud)
通过运行:
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.
>>>
Run Code Online (Sandbox Code Playgroud)
你可以看到在虚拟环境中安装的python版本
Chr*_*son 10
该-p方法效果很好,但您必须记住每次都使用它.如果您的目标是通常切换到较新版本的Python,那将是一种痛苦,也可能导致错误.
您的另一个选择是设置一个与之相同的环境变量-p.通过您的~/.bashrc文件或管理登录会话的环境变量的任何位置设置此项:
export VIRTUALENV_PYTHON=/path/to/desired/version
Run Code Online (Sandbox Code Playgroud)
然后在virtualenv您未-p在命令行上指定的任何时候使用它.
在窗户上:
py -3.4x32 -m venv venv34
Run Code Online (Sandbox Code Playgroud)
或者
py -2.6.2 -m venv venv26
Run Code Online (Sandbox Code Playgroud)
这使用py启动器,它将为您找到正确的 python 可执行文件(假设您已经安装了它)。
对于Mac(High Sierra),在python3中安装virtualenv并为python2创建virtualenv:
$ python3 -m pip install virtualenv
$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14
Run Code Online (Sandbox Code Playgroud)
正如多个答案中已经提到的,使用virtualenv是一个干净的解决方案。然而,每个人都应该注意的一个小陷阱是,如果在bash_aliases中设置了 python 的别名,如下所示:
python=python3.6
Run Code Online (Sandbox Code Playgroud)
该别名也将在虚拟环境中使用。因此,在这种情况下,无论使用什么解释器来创建环境,python -V在虚拟环境中运行都会始终输出:3.6
virtualenv venv --python=pythonX.X
Run Code Online (Sandbox Code Playgroud)
通过使用命令替换为您找到python2更简单:
virtualenv -p $(which python2) <path/to/new/virtualenv/>
或者在使用virtualenvwrapper时:
mkvirtualenv -p $(which python2) <env_name>
对于 Windows 来说,这些似乎有点过于复杂。如果您在运行 python 3.3 或更高版本的 Windows 上,则可以使用 python 启动器py更轻松地完成此操作。只需安装不同的 python 版本,然后运行:
py -[my version] -m venv env
Run Code Online (Sandbox Code Playgroud)
这将使用 python 创建一个env在当前目录中调用的虚拟环境[my version]。举个例子:
py -3.7 -m venv env
./env/Scripts/activate
Run Code Online (Sandbox Code Playgroud)
这将创建一个名为envusing python3.7 的虚拟环境并激活它。不需要路径或其他复杂的东西。
我在 Windows 上使用了这个答案
py -3.4 -m venv c:\path\to\wherever\you\want\it
Run Code Online (Sandbox Code Playgroud)
在Mac上我使用pyenv和virtualenvwrapper.我不得不创造一个新的virtualenv.你需要自制软件我假设你已经安装了,如果你在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}
Run Code Online (Sandbox Code Playgroud)
我也冻结了我的要求,所以我可以简单地重新安装在新的virtualenv中:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
您应该安装了该 Python 版本。如果你拥有它,那么基本上,
使用 virtualenv,
virtualenv --python=python3.8 env/place/you/want/to/save/to
Run Code Online (Sandbox Code Playgroud)
与 venv
python3.8 -m venv env/place/you/want/to/save/to
Run Code Online (Sandbox Code Playgroud)
上面的例子是针对python3.8的,你可以将其更改为具有不同版本的虚拟环境,因为它们已安装在您的计算机中。
我使用pyenv来管理我的 python 版本。
pyenv install 3.7.3
pyenv local 3.7.3
Run Code Online (Sandbox Code Playgroud)
检查你的Python版本:
$ python --version
Python 3.7.3
Run Code Online (Sandbox Code Playgroud)
使用venv创建虚拟环境:
$ python --version
Python 3.7.3
Run Code Online (Sandbox Code Playgroud)
然后激活虚拟环境:
python -m venv .
Run Code Online (Sandbox Code Playgroud)
检查你的Python版本:
source bin/activate
Run Code Online (Sandbox Code Playgroud)
您可能需要删除之前的虚拟环境
rm -rf bin
Run Code Online (Sandbox Code Playgroud)
在 Linux Ubuntu 21.04(当前是 Python 3.9.5)上,我需要获得 Python 3.7.8 的 virtualenv。开始工作的完整步骤:
找到你想要的Python版本源,例如3.7.8在这里:https ://www.python.org/downloads/release/python-378/
下载 Gzip 压缩的源 tarball
解压tar zxvf Python-3.7.8.tgz(如果与3.7.8不同,请根据需要修改您的版本号)
将解压后的文件夹复制到 /usr/bin :sudo cp -r Python-3.7.8 /usr/bin
cd /usr/bin/Python-3.7.8/
Run Code Online (Sandbox Code Playgroud)
如果您想查看目前为止拥有的内容,请检查内容: ls
sudo time ./configure
sudo time make
time sudo make install
time make clean
Run Code Online (Sandbox Code Playgroud)
检查你的 python 是如何设置和报告的:
which python
python --version
Run Code Online (Sandbox Code Playgroud)
应该全部与您的主要安装相关(对我来说是Python 3.9.5)
要检查您的新安装:
which python 3.7
python3.7 --version
Run Code Online (Sandbox Code Playgroud)
应该与您的 3.7.8 安装有关
如果您想运行它来检查,请执行以下操作:
python3.7
exit()
Run Code Online (Sandbox Code Playgroud)
安装 venv:
sudo apt install venv
Run Code Online (Sandbox Code Playgroud)
要创建 venv(可能在您的存储库中,如果是这样,请将 .venv 添加到 .gitignore):
python3.7 -m venv .venv
Run Code Online (Sandbox Code Playgroud)
要激活您的 venv:
source .venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
检查您的版本:
python --version
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671911 次 |
| 最近记录: |