我有一个目前使用python 2.5.4运行的Debian系统。我正确安装了virtualenv,一切正常。我是否可以将virtualenv与其他版本的Python一起使用?
我编译了Python 2.6.2,并希望将其与一些virtualenv一起使用。覆盖二进制文件是否足够?还是我必须更改有关库的某些内容?
我有一个目前使用python 2.5.4运行的Debian系统。我正确安装了virtualenv,一切正常。我是否可以将virtualenv与其他版本的Python一起使用?
我编译了Python 2.6.2,并希望将其与一些virtualenv一起使用。覆盖二进制文件是否足够?还是我必须更改有关库的某些内容?
Answers:
在创建virtualenv实例时,只需使用--python
(或short -p
)选项来指定要使用的Python可执行文件,例如:
virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>
注意:对于Python 3.3或更高版本,请参阅下面的Aelfinn 答案。
virtualenv -p `which python2.6` <path/to/new/virtualenv>
从Python 3开始,Python Docs建议使用以下命令创建虚拟环境:
python3 -m venv <myenvname>
请注意,venv
不允许使用其他版本的Python创建虚拟环境。为此,请安装并使用virtualenv
软件包。
该pyvenv
脚本可用于创建虚拟环境
pyvenv /path/to/new/virtual/environment
但自Python 3.6起已弃用。
python3 -m venv <envname>
以防止所有内容都需要存根脚本。
pyvenv
或python3 -m venv ...
不要安装python-config
脚本。这意味着即使在激活Python3环境之后,也会在全系统范围python-config
内调用,并产生令人困惑的后果。看到这2011 bug报告github.com/pypa/virtualenv/issues/169和我的问题stackoverflow.com/questions/42020937/...
venv
不允许使用其他版本的Python创建virtualenv。” -您确定这是真的吗?如果我使用特定的Python版本创建它,则对我来说似乎很好,例如python3.5 -m venv <myenvname>
(前提是我拥有该版本的Python)。
venv
使用特定的Python版本创建的方法是在设置该版本时使用该版本。例如:python3.5 -m venv venv
这些是您在共享托管环境上时需要执行的步骤,需要从源代码安装和编译Python,然后venv
从您的Python版本创建。对于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
自然,这可以适用于您想要复制工作和部署的确切环境的任何情况。
~/.localpython/bin/virtualenv
而不是仅仅virtualenv
用于完成安装而没有错误。此外,请使用source ve/bin/activate
代替source activate
。
有一个更简单的方法,
virtualenv venv --python=python2.7
感谢您的评论,这仅在系统级别安装了python2.7的情况下才有效(例如/usr/bin/python2.7)。
否则,如果您使用自制软件,则可以使用该路径提供所需的内容。
virtualenv venv --python=/usr/local/bin/python
您可以使用以下命令找到python安装的路径
which python
这也适用于python 3。
which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3
最终凝结为:
virtualenv venv -p `which python`
virtualenv venv -p `which python3`
virtualenv venv --python=python3.6
,以及
virtualenv env --python=python2
virtualenv venv --python=<insert_your_python_version_here>
这里<insert_your_python_version_here>
是我的情况C:\Python\Python368\python.exe
Mac OSX 10.6.8(Snow Leopard):
1)当您这样做时pip install 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版本。但是,您可以使用以下命令指定计算机上安装的任何版本的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.
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
3)我安装的各种python的名称都类似于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
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.
与virtualenv不同,virtualenvwrapper将在$ WORKON_HOME环境变量指定的位置创建环境。这样可以将您所有的环境都放在一个地方。
which pip
没有告诉我Python的版本。它给了我这个/usr/local/bin/pip
。
/usr/local/bin
操作$ ls -al pip
,则应该看到类似以下内容的内容: pip -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip
mkproject
如果您希望它创建项目目录和给定python版本的虚拟环境,则可以使用该命令。 mkproject -p /usr/bin/python3.6 myNewPython36Project
这两个命令应该可以正常工作。
virtualenv -p python2 myenv
(对于python2)
virtualenv -p python3 myenv
(对于python3)
假设您当前在virtualenv中安装了python 2.7。但是要使用python3.2
,您必须使用以下命令进行更新:
$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv
然后通过以下方式激活您的virtualenv:
$ source activate name_of_your_virtualenv
然后python --version
在shell中执行:检查您的版本是否已更新。
-p
。
您可以virtualenv
使用所需的python版本进行调用。例如:
python3 -m virtualenv venv
或者,直接指向您的virtualenv路径。例如,对于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版本
pip3 install virtualenv
首先运行
该-p
方法效果很好,但是您必须记住每次都使用它。如果您的目标是通常切换到较新版本的Python,那很痛苦,而且还可能导致错误。
您的另一种选择是设置一个环境变量,其作用与相同-p
。通过~/.bashrc
文件或在登录会话中管理环境变量的任何位置进行设置:
export VIRTUALENV_PYTHON=/path/to/desired/version
然后virtualenv
,只要您未-p
在命令行上指定,就可以使用它。
export VIRTUALENVWRAPPER_PYTHON=/path/to/desired/version
每个virtualenvwrapper文档设置都不起作用,但是此解决方案有效吗?
virtualenvwrapper
运行时使用的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
python3 -m pip install virtualenv
在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}
我也首先冻结了我的需求,因此我可以使用以下命令重新安装在新的virtualenv中:
pip install -r requirements.txt
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python {virtual_env_name}
版本,而不是版本。如果SO允许简短编辑,我会修复它。
[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/
安装:
[注意:在我的系统中是env,不是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
检查已安装的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
如何为特定的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.8作业环境/系统上]建立Python 3.7 venv:
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)
添加到~/.bashrc
:
alias p37='echo " [Python 3.7 venv (source ~/venv/py3.7/bin/activate)]" && source ~/venv/py3.7/bin/activate'
测试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]
>>>
为python3创建环境:
virtualenv --python=/usr/bin/python3 env
激活它:
source env/bin/activate
是的,以上答案是正确的,并且在基于Linux和MAC OS X的基于Unix的系统上可以正常工作。
我试图为Python2和Python3创建virtualenv使用以下命令。
在这里,我已经使用venv2&venv3作为其名称Python2与Python3分别。
Python2»
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$
Python3»
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$
检查Python安装位置
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$
对于Windows,这些似乎有些复杂。如果您使用的是运行python 3.3或更高版本的Windows,则可以使用python启动器py
更加轻松地执行此操作。只需安装不同的python版本,然后运行:
py -[my version] -m venv env
这将env
使用python在当前目录中创建一个虚拟环境[my version]
。举个例子:
py -3.7 -m venv env
./env/Scripts/activate
这将创建一个env
使用python3.7 的虚拟环境并将其激活。不需要路径或其他复杂的东西。
py -3.7 -m venv env
不是(-m
缺少)吗?
virtualenv -p python3 myenv
对于2019年的Debian(debian 9)系统,我发现了一个简单的解决方案,可以从虚拟环境中解决问题。
假设虚拟环境是通过以下方式创建的:
python3.7 -m venv myenv
但只有python2
和的版本python2.7
,因此您需要python3.7的最新功能。
然后,只需运行以下命令:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
如果系统上已经提供python3.7软件包,则会添加这些软件包。
它在Windows上使用python 2安装对我有用:
这就是我在现有python 2安装上创建Python 3虚拟环境的方式。
您可以这样做:
virtualenv -p python3 .
这是如何在Visual Studio Code文件夹中创建虚拟环境
的分步说明:我使用了Powershell(管理员模式):1.我在要创建虚拟环境的地方创建了VSCode文件夹-“ D:\ Code_Python_VE”。
2.接下来,我键入命令-“ pip3 install virtualenv”。(D:\ Code_Python_VE> pip3安装virtualenv)3. D:\ Code_Python_VE> python3 -m venv project_env
4. D:\ Code_Python_VE> project_env \ Scripts \ activate.bat
5. D:\ Code_Python_VE> ls-这将列出一个新的目录“ project_env”。
6. D:\ Code_Python_VE>代码。这将启动Visual Studio代码。确保命令是(代码。)。
7.创建具有以下内容的launch.jason:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "python",
"request": "launch",
"name": "Python: Current File (Integrated Terminal 1)",
"program": "${file}"
},
{
"name": "Python: Current File (Integrated Terminal 2)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
(请搜索如何转到“调试”窗口并在VS Code中添加新配置)。