在virtualenv中使用Python 3

Pro*_*eus 735 python virtualenv python-3.x

使用virtualenv,我使用默认版本的Python(2.7)运行我的项目.在一个项目中,我需要使用Python 3.4.

brew install python3以前在Mac上安装它.现在,我如何创建一个使用新版本的virtualenv?

例如sudo virtualenv envPython3

如果我尝试:

virtualenv -p python3 test
Run Code Online (Sandbox Code Playgroud)

我明白了:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
Run Code Online (Sandbox Code Playgroud)

tbr*_*ker 1318

简单地跑

virtualenv -p python3 envname
Run Code Online (Sandbox Code Playgroud)

OP编辑后更新:

有没有在OP的版本virtualenv中的一个bug,如所描述这里.通过运行修复问题:

pip install --upgrade virtualenv
Run Code Online (Sandbox Code Playgroud)

  • virtualenv升级工作,但由于某种原因,我还必须明确关于python3可执行文件与`virtualenv -p $(其中python3)envname` (14认同)
  • 似乎这是修复了virtualenv的错误.有关详细信息,请参阅[此处](https://github.com/pypa/virtualenv/issues/463#issuecomment-25904873) - `pip install --upgrade virtualenv`有望修复它. (3认同)
  • @tbrisker你应该把这个bug报告添加到你的答案中,这样它就是自包含的. (2认同)
  • 是否可以只更改当前环境的python解释器而不是创建新环境? (2认同)
  • 之后,您需要使用“cd envname”并运行“source ./bin/activate”——这将运行虚拟环境。使用“deactivate”退出该虚拟环境。 (2认同)

gec*_*kon 235

Python 3内置了对虚拟环境的支持 - venv.使用它可能会更好.参考文档:

通过执行pyvenv脚本来创建虚拟环境:

pyvenv /path/to/new/virtual/environment

Python 3.6及更新版的更新:

作为pawciobiel正确评价,pyvenv弃用像Python 3.6和新的方法是:

python3 -m venv /path/to/new/virtual/environment
Run Code Online (Sandbox Code Playgroud)

  • 确实如此,你也可以运行:`python3 -m venv/path/v3`,因为从Python 3.6开始,pyvenv脚本已被弃用. (7认同)
  • 在mac上使用最新的anaconda python 3.6,在这里使用`python3 -m venv/path/v3`错误.`错误:命令'['/ path/v3/bin/python3',' - Im','ensurepip',' - upgrade',' - default-pip']'返回非零退出`我错过了什么?使用`--without-pip`选项,它至少可以正确地创建具有激活/停用脚本的venv. (4认同)
  • 任何人都知道如何激活python3.6 -m venv &lt;venvname&gt;。在创建的目录中没有Scripts /,在bin /子目录中也没有“激活”。 (3认同)
  • 我希望您是对的,因为我刚刚离开virtualenv并与python 3.5.2一起使用pyenv (2认同)

Joh*_*ner 54

我试过pyenv,它非常方便切换python版本(全局,本地文件夹或virtualenv):

brew install pyenv
Run Code Online (Sandbox Code Playgroud)

然后安装你想要的Python版本:

pyenv install 3.5.0
Run Code Online (Sandbox Code Playgroud)

并简单地创建virtualenv与所需的解释器版本的路径:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv
Run Code Online (Sandbox Code Playgroud)

就是这样,查看版本:

. ./myenv/bin/activate && python -V
Run Code Online (Sandbox Code Playgroud)

还有pyenv pyenv-virtualenv的插件,但它不适合我.


San*_*eep 54

安装先决条件.

sudo apt-get install python3 python3-pip virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)

创建基于Python3的虚拟环境.可选择启用--system-site-packages标志.

mkvirtualenv -p /usr/bin/python3 <venv-name>
Run Code Online (Sandbox Code Playgroud)

设置为虚拟环境.

workon <venv-name>
Run Code Online (Sandbox Code Playgroud)

使用pip包管理器安装其他要求.

pip install -r requirements.txt
pip install <package_name>
Run Code Online (Sandbox Code Playgroud)

当同时处理多个python项目时,通常建议安装像pdbpp全局一样的公共包,然后在virtualenvs中重用它们.

除了占用最少的磁盘空间和网络带宽之外,使用这种技术可以节省大量时间来获取包和安装它们.

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>
Run Code Online (Sandbox Code Playgroud)

Django具体说明

如果有很多系统范围的python包,那么建议不要--system-site-packages在开发过程中使用flag,因为我注意到它会大大减慢Django的启动速度.我认为Django环境初始化是手动扫描并附加系统路径中的所有站点包,这可能是原因.甚至python manage.py shell变得非常慢.

说实验哪个选项效果更好.可以安全地跳过--system-site-packagesDjango项目的标志.


bew*_*man 34

virtualenv --python=/usr/bin/python3 <name of env>
Run Code Online (Sandbox Code Playgroud)

为我工作.


Kir*_*nee 18

您可以在创建环境时指定特定的Python版本.
它在virtualenv.py中提到过

virtualenv --python=python3.5 envname
Run Code Online (Sandbox Code Playgroud)

在某些情况下,这必须是可执行文件的完整路径:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname
Run Code Online (Sandbox Code Playgroud)

怎么-p工作

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)
Run Code Online (Sandbox Code Playgroud)


Azi*_*lto 12

我有同样的ERROR信息.tbrisker的解决方案在我的案例中不起作用.相反,这解决了这个问题:

$ python3 -m venv .env
Run Code Online (Sandbox Code Playgroud)


Koh*_*001 10

这就是您所需要的,以便在python / python3中运行虚拟环境

首先,如果virtualenv未安装,请运行

pip3 install virtualenv 
Run Code Online (Sandbox Code Playgroud)

现在运行:

virtualenv -p python3 <env name> 
Run Code Online (Sandbox Code Playgroud)

有时,cmd virtualenv失败,请使用以下命令:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location
Run Code Online (Sandbox Code Playgroud)

现在激活虚拟环境:

source <env_name>/bin/activate
Run Code Online (Sandbox Code Playgroud)

要么:

source `pwd`/<env_name>/bin/activate
Run Code Online (Sandbox Code Playgroud)

现在运行

which python
Run Code Online (Sandbox Code Playgroud)

您应该看到目录和<env_name>/bin/python后缀的完整路径

要退出virtualenv,请运行:

deactivate 
Run Code Online (Sandbox Code Playgroud)


Bla*_*aze 7

Python现在带有自己的虚拟环境实现,名称为"venv".我建议使用它,而不是virtualenv.

引自venv - docs,

从版本3.6开始不推荐使用:pyvenv是为Python 3.3和3.4创建虚拟环境的推荐工具,在Python 3.6中已弃用.

版本3.5中已更改:现在建议使用venv来创建虚拟环境.

对于windows,要在某个项目上启动venv,打开cmd:

python -m venv "c:\path\to\myenv"
Run Code Online (Sandbox Code Playgroud)

(如果它包含任何空格,建议在目录路径周围使用双引号.例如:"C:/ My Dox/Spaced Directory/Something")

一旦设置了venv,您将在项目目录中看到一些新文件夹.其中一个是"脚本".

要激活或调用venv,您需要:

C:\> <venv>\Scripts\activate.bat
Run Code Online (Sandbox Code Playgroud)

您可以在shell中键入"deactivate"来停用虚拟环境.有了这个,您现在可以安装项目特定的库,它们将驻留在"Lib"文件夹下.

================================编辑1 ================ ====================将在下面讨论的场景不是最初的问题,只是添加这个以防有人使用带有python扩展名的vscode

如果您使用带有python扩展名的vs代码,则可能会遇到指向全局安装的pylint问题.在这种情况下,pylint将无法查看虚拟环境中安装的模块,因此在导入时将显示错误.

是一个简单的方法来解决这个问题.

cd Workspace\Scripts
.\Activate.ps1
code .
Run Code Online (Sandbox Code Playgroud)

我们基本上首先激活环境然后调用vs-code,以便pylint在环境中启动并且可以看到所有本地包.


Suj*_*ari 7

在python3.6中,我python3 -m venv myenv按照文档尝试过 ,但是花了这么长时间.所以非常简单快速的命令就是 python -m venv yourenv 在python3.6上对我有用.


sag*_*age 6

除了其他答案,我建议您检查您正在执行的virtualenv实例:

which virtualenv
Run Code Online (Sandbox Code Playgroud)

如果在/ usr/local/bin中出现这种情况,则可能 - 甚至可能 - 您安装virtualenv(可能使用easy_tools或pip的实例)而不使用系统的包管理器(在OP的情况下为brew).这是我的问题.

多年前 - 当我更加无知时 - 我已经安装了virtualenv,它掩盖了我的系统包提供的virtualenv.

在删除了这个破旧的虚拟虚拟物后,我的问题就消失了.


小智 6

下面的简单命令可以创建一个版本为 3.5 的虚拟环境

apt-get install python3-venv

python3.5 -m venv <your env name>
Run Code Online (Sandbox Code Playgroud)

如果你想要虚拟环境版本为 3.6

python3.6 -m venv <your env name>
Run Code Online (Sandbox Code Playgroud)


Str*_*ker 5

在Mac上,我必须执行以下操作才能使其正常工作。

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
Run Code Online (Sandbox Code Playgroud)