Usando Python 3 no virtualenv

Usando virtualenv, eu executo meus projetos com a versão padrão do Python (2.7). Em um projeto, eu preciso usar o Python 3.4.

Eu usei o brew install python3 para instalá-lo no meu Mac. Agora, como posso criar um virtualenv que utilize a nova versão?

e.g. sudo virtualenv envPython3

Se eu tentar:

virtualenv -p python3 test

Eu entendo:

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
Solução

funcionar simplesmente

virtualenv -p python3 envname

Atualização após a edição do OP:

Houve um bug na versão do virtualenv do OP, como descrito aqui. O problema foi corrigido com a execução:

pip install --upgrade virtualenv
Comentários (8)

Python 3 tem um suporte integrado para ambientes virtuais - venv. Talvez seja melhor usar isso em seu lugar. Referente aos docs:

A criação de ambientes virtuais é feita através da execução do pyvenv guião:

pyvenv /caminho/para/novo/virtual/ambiente

Actualização para Python 3.6 e mais recentes:

Como pawciobiel corretamente comentários, pyvenv é depreciado a partir de Python 3.6 e o novo caminho é:

python3 -m venv /path/to/new/virtual/environment
Comentários (7)

Além das outras respostas, recomendo verificar que instância de virtualenv você está executando:

which virtualenv

Se isto aparecer em /usr/local/bin, então é possível - mesmo provável - que você tenha instalado o virtualenv (possivelmente usando uma instância de easy_tools ou pip) sem usar o gerenciador de pacotes do seu sistema (brew no caso do OP). Este foi o meu problema.

Anos atrás - quando eu era ainda mais ignorante - eu tinha instalado o virtualenv e ele estava mascarando o pacote do meu sistema - virtualenv fornecido.

Depois de remover este velho e quebrado virtualenv, os meus problemas foram-se.

Comentários (0)