Как создать virtualenv с помощью Python3.3 в Ubuntu?

Я использую Precise Pangolin amd64. Я установил Python 3.3 из ppa:fkrull/deadsnakes.

Теперь я хочу на самом деле использовать эта новая версия Python в virtualenv. Но как я могу это сделать? Я получаю следующую ошибку:

$ virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3Running virtualenv with interpreter /usr/bin/python3.3The --no-site-packages flag is deprecated; it is now the default behavior.New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/pythonTraceback (most recent call last):  File "/usr/local/lib/python2.7/site-packages/site.py", line 73, in <module>    __boot()  File "/usr/local/lib/python2.7/site-packages/site.py", line 2, in __boot    import sys, imp, os, os.path   ImportError: No module named 'imp'ERROR: The executable /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 is not functioningERROR: It thinks sys.prefix is '/home2/USERNAME/.virtualenvs' (should be '/home2/USERNAME/.virtualenvs/pywork3')ERROR: virtualenv is not compatible with this system or executable

Если вместо этого я явно использую python3.3 чтобы вызвать virtualenv, я получаю эту ошибку:

$ python3.3 /usr/bin/virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3Traceback (most recent call last):  File "/usr/bin/virtualenv", line 2, in <module>    import virtualenvImportError: No module named 'virtualenv'

Я застрял. Любая помощь будет очень признательна!

РЕДАКТИРОВАТЬ: Следуя совету @thefourtheye, я очистил свой местный site-packages каталог (фактически только удаление site.py). Теперь я продвинулся еще на шаг, но virtualenv жалуется на пропавшую easy_install:

 Error [Errno 2] No such file or directory:   '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command    /home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz

Я действительно установил пакет python3-setuptools, который устанавливает версию easy_install для Py3.

ПРАВКА2:

Вот подробный вывод, без явной передачи --distribute и --no-site-packages, поскольку эти два переключателя являются поведением по умолчанию моего virtualenv:

$ virtualenv --verbose -p /usr/bin/python3.3 ~/.virtualenvs/pywork3Running virtualenv with interpreter /usr/bin/python3.3Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3Symlinking Python bootstrap modules  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/config-3.3m  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/lib-dynload  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/os.py  Ignoring built-in bootstrap module: posix  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/posixpath.py  Cannot import bootstrap module: nt  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/ntpath.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/genericpath.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/fnmatch.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/locale.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/encodings  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/codecs.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/stat.py  Cannot import bootstrap module: UserDict  Cannot import bootstrap module: copy_reg  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/types.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/re.py  Cannot import bootstrap module: sre  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_parse.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_constants.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_compile.py  Ignoring built-in bootstrap module: zlib  Cannot import bootstrap module: _abcoll  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/warnings.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/linecache.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/abc.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/io.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_weakrefset.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copyreg.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tempfile.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/random.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/__future__.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/collections  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/keyword.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tarfile.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/shutil.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/struct.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copy.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/base64.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/bisect.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_dummy_thread.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hashlib.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/heapq.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hmac.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/reprlib.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/rlcompleter.py  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/weakref.pyCreating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site-packagesWriting /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site.pyWriting /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/orig-prefix.txtWriting /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/no-global-site-packages.txtCreating parent directories for /home2/USERNAME/.virtualenvs/pywork3/includeSymlinking /home2/USERNAME/.virtualenvs/pywork3/include/python3.3mCreating /home2/USERNAME/.virtualenvs/pywork3/binNew python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 to 0o755Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/pythonChanged mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python to 0o755Testing executable with /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 -c "import sysprefix = sys.prefixif sys.version_info[0] == 3:    prefix = prefix.encode('utf8')if hasattr(sys.stdout, 'detach'):    sys.stdout = sys.stdout.detach()elif hasattr(sys.stdout, 'buffer'):    sys.stdout = sys.stdout.buffersys.stdout.write(prefix)"Got sys.prefix result: '/home2/USERNAME/.virtualenvs/pywork3'Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutilsWriting /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/__init__.pyWriting /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/distutils.cfgUsing existing distribute egg: /usr/share/python-virtualenv/distribute-0.6.24.tar.gzInstalling distribute..............................................................................................................................................................................................................................................................................................................................................................................................................done.Installing existing pip-1.1.tar.gz distribution: /usr/share/python-virtualenv/pip-1.1.tar.gzInstalling pip...  Error [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command /home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz...Installing pip...done.Traceback (most recent call last):  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 2283, in <module>    main()  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main    never_download=options.never_download)  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1054, in create_environment    install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 643, in install_pip    filter_stdout=_filter_setup)  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 976, in call_subprocess    cwd=cwd, env=env)  File "/usr/lib/python3.3/subprocess.py", line 818, in __init__    restore_signals, start_new_session)  File "/usr/lib/python3.3/subprocess.py", line 1416, in _execute_child    raise child_exception_type(errno_num, err_msg)FileNotFoundError: [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install'

Python 3.3 имеет встроенный venv.

http://docs.python.org/3/library/venv.html#module-venv

Просто запустите

pyvenv-3.3 /path/to/environment

А затем активировать его

source /path/to/environment/bin/activate

Эта встроенная версия virtualenv гораздо более гибкая, чем та, к которой вы, вероятно, привыкли. Например, вы можете расширить EnvBuilder, чтобы делать практически все, что вы хотите. Вы можете скопировать пример реализации EnvBuilder по ссылке ниже и поиграть с ним:http://docs.python.org/3/library/venv.html#an-example-of-extending-envbuilder

Приведенный выше сценарий, вероятно, делает большую часть того, что мы ожидаем получить от virtualenv. Так что, если вам просто нужен virtualenv с easy_install и pip, вы должны быть готовы.

Видеть @MarkOfSineвнесите изменения ниже, чтобы получить разъяснения о том, как начать работу, если вы все еще в замешательстве.


Чтобы добавить к вышесказанному, и в соответствии с документами:
Например, после выполнения: pyvenv-3.3 /path/to/my_project/venv
Ты можешь бежать distribute_setup.py, который, кажется, делает разные вещи, но, по сути, вы в конечном итоге получаете easy_install В вашем ./my_project/venv/bin каталог.
Затем это можно использовать для установки pip и тому подобное.

В нем не сказано, куда вы должны попасть distribute_setup.py с, поэтому я скачал с:

http://python-distribute.org/distribute_setup.py

и использование активированной среды:

cd /path/to/my_projectsource venv/bin/activate

побежал :

python distribute_setup.py

и

easy_install pip

Который затем завершил настройку виртуальной среды, более встроенной в virtualenv на python 2.x

Это проще, чем кажется:

virtualenv -p /usr/bin/python3 yourenvsource yourenv/bin/activatepip install package-name

действительно работает :)

  1. Сделайте резервную копию пакетов сайта.

    cp -r /usr/local/lib/python2.7/site-packages/ /tmp/site-packages

  2. Усеките этот каталог

    rm -rf /usr/local/lib/python2.7/site-packages/

  3. Теперь попробуйте то же самое

    virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3

  4. Для установки без pip

    virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3 --no-pip

РЕДАКТИРОВАТЬ: Похоже, версия virtualenv (1.7.1.2) и python3.3 несовместимы. Итак, пожалуйста, попробуйте это

  1. Удалите python-virtualenv с помощью sudo apt-get remove python-virtualenv

  2. wget http://peak.telecommunity.com/dist/ez_setup.py; sudo python ez_setup.py Это приведет к установке последней версии easy_install.

  3. sudo easy_install pip

  4. sudo pip install virtualenv

  5. virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3

Вы делаете это слишком сложно. Если это включено в python3, просто создайте его с помощью :

python3 -m venv

Вы даже можете создать псевдоним, если хотите

alias virtualenv3='python3 -m venv'

В зависимости от машины вам может потребоваться указать интерпретатор:

alias virtualenv3='python3 -m venv -p python3'

Шаги, которые сработали для меня: На MAC OSX 10.9.5

  1. Загрузите и установите Python-3.4.3 вручную.

    P3PATH=/Users/$USER/Python3mkdir -p $P3PATHcd $P3PATHtar -zxvf Python-3.4.3.tgz./configure --prefix=$P3PATH/Python-3.4.3make; make install
  2. Создайте virtualenv.

    $P3PATH/Python-3.4.3/bin/pyvenv py3envsource py3env/bin/activate

Примечание:
virtualenv -p <path to python3> py3env не сработало:

Error due to zlib

< pre > < code>On Ubuntu 14.04

sudo apt-get install python3-pip

sudo pip install virtualenv

virtualenv-3.4 --нет-сайт-пакеты venv
< / code > < / pre>

Просто для ясности, можете ли вы попробовать эту команду (исключая distribute): virtualenv --no-site-packages -p /usr/bin/python3.3 ~/.virtualenvs/pywork3?

Я также попробовал использовать --setuptools, и результат точно такой же (включая установку дистрибутива).

В 14.04 все работает безболезненно.