우분투에서 Python3.3으로 virtualenv를 만드는 방법은 무엇입니까?


46

Precise Pangolin amd64를 실행 중입니다. ppa : fkrull / deadsnakes에서 Python 3.3을 설치했습니다.

이제 virtualenv에서이 새로운 Python 버전 을 실제로 사용 하고 싶습니다 . 하지만 어떻게해야합니까? 다음과 같은 오류가 발생합니다.

$ virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
The --no-site-packages flag is deprecated; it is now the default behavior.
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Traceback (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 functioning
ERROR: 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.3virtualenv를 명시 적 으로 호출하면이 오류가 발생합니다.

$ python3.3 /usr/bin/virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 2, in <module>
    import virtualenv
ImportError: 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-setuptoolsPy3 버전의 easy_install을 설치하는 패키지 를 설치했습니다.

EDIT2 :

여기에 자세한 출력을 명시 적으로 전달하지 않고,의 --distribute--no-site-packages두 스위치 내의 기본 동작이기 때문에, VIRTUALENV :

$ virtualenv --verbose -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3
Symlinking 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.py
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site-packages
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/orig-prefix.txt
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/no-global-site-packages.txt
Creating parent directories for /home2/USERNAME/.virtualenvs/pywork3/include
Symlinking /home2/USERNAME/.virtualenvs/pywork3/include/python3.3m
Creating /home2/USERNAME/.virtualenvs/pywork3/bin
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 to 0o755
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python to 0o755
Testing executable with /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 -c "
import sys
prefix = sys.prefix
if 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.buffer
sys.stdout.write(prefix)
"
Got sys.prefix result: '/home2/USERNAME/.virtualenvs/pywork3'
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/__init__.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/distutils.cfg
Using existing distribute egg: /usr/share/python-virtualenv/distribute-0.6.24.tar.gz
Installing distribute..............................................................................................................................................................................................................................................................................................................................................................................................................done.
Installing existing pip-1.1.tar.gz distribution: /usr/share/python-virtualenv/pip-1.1.tar.gz
Installing 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'

명확히하기 위해이 명령을 시도 할 수 있습니까 (제외 distribute) : virtualenv --no-site-packages -p /usr/bin/python3.3 ~/.virtualenvs/pywork3?
don.joey

나는 함께 시도했지만 --setuptools결과는 정확히 동일합니다 (배포 설치 포함).
andreas-h

14.04에서는 모든 것이 고통없이 작동합니다.
Antti Haapala

답변:


25
  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. 핍없이 설치하려면

    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


흥미 롭습니다. 이제 한 걸음 더 나아가고 있지만 아직까지는 끝이 아닙니다. 내 업데이트 된 질문보기
andreas-h

virtualenv 코드를 겪고 있습니다. 더 자세한 정보를 사용하여 동일한 명령을 실행하고 전체 출력을 보여줄 수 있다면 도움이 될 것입니다. virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3 --verbose
thefourtheye

알았어, 내 업데이트 된 질문을 참조하십시오.
andreas-h

2 시간 이상 분석했습니다. 배포가 easy_install 스크립트를 bin 디렉토리에 설치하지 않는 것 같습니다. 나중에 수동으로 설치할 수 있습니다. 그래서 그냥이 질문에 업데이트 한 바와 같이, PIP없이 설치하려고 VIRTUALENV 설치
thefourtheye

1
virtualenv를 수동으로 설치하는 대신 package.ubuntu.com/raring/all/python-virtualenv/download에서 Ubuntu Raring 용 .dev 패키지 를 다운로드하여 를 통해 설치했습니다 dpkg -i. 지금 작동하는 것 같습니다. 고마워요!
andreas-h

58

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에서 벗어날 것으로 예상되는 대부분의 작업을 수행합니다. 따라서 easy_install 및 pip가있는 virtualenv가 필요하다면 잘 가야합니다.

여전히 혼란 스러울 때 달리는 방법에 대한 설명은 아래 @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_project
source venv/bin/activate

달렸다 :

python distribute_setup.py

easy_install pip

그런 다음 Python 2.x에서 virtualenv와 함께 인라인으로 가상 환경 설정을 완료했습니다.


2
좋은 하나-나는 이것을 몰랐다 ...
andreas-h

1
실제로 이것은 "실제"virtualenv가 아닌 것 같습니다. 활성화 후 pip 또는 easy_install을 사용할 수 없습니다.
andreas-h

@ andreas-h 직접 설치해야합니다. 그것이 "실제"가되지는 않습니다.
Chris

1
@ andreas-h 또한, 원하는 것을 추가 할 수있는 스크립트를 만들 수 있도록 설계되었습니다. docs.python.org/3/library/…
Chris

pip를 설치할 때 터미널이 잘못된 권한에 대해 계속 소리를 지르면 easy_install의 올바른 바이너리를 사용하고 있는지 확인하십시오. 에 의해 virtualenv에서 바이너리를 명시 적으로 선택할 수 있습니다 ./venv/bin/easy_install pip.
OrangeTux

49

보이는 것보다 쉽습니다.

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

정말 작동합니다 :)


5
즉 정확한 답해야
micgeronimo

응! 그것은 매우 쉬웠다! 고마워요 @Cem Yildiz
Fahad Ahammed 4

8

당신은 이것을 너무 복잡하게하고 있습니다. 에 포함되어 있으면 다음 python3과 같이 만드십시오.

python3 -m venv

원하는 경우 별칭을 만들 수도 있습니다

alias virtualenv3='python3 -m venv'

기계에 따라 인터프리터를 지정해야 할 수도 있습니다.

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

패키지 python3-venv는 최소한 우분투 14.04에서도 필요합니다.
gioele

나를 위해 (14.04에도) 패키지를 호출했습니다 python3.4-venv.
tobek

2

나를 위해 일한 단계 : MAC OSX 10.9.5에서

  1. Python-3.4.3을 수동으로 다운로드하여 설치하십시오 .

    P3PATH=/Users/$USER/Python3
    mkdir -p $P3PATH
    cd $P3PATH
    tar -zxvf Python-3.4.3.tgz
    ./configure --prefix=$P3PATH/Python-3.4.3
    make; make install
  2. virtualenv를 작성하십시오.

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

참고 :
virtualenv -p <path to python3> py3env작동하지 않았습니다 :

Error due to zlib

이것은 데비안 7에서도 잘 작동합니다. 또 다른 P3PATH
rubo77

사용자가 확인에-A-컨테이너 데비안 기반 배포판은 설치에 대한 libssl-devzlib1g-dev파이썬은 _ssl.so zlib.so 컴파일 그래서
Nehal J 와니

1
On Ubuntu 14.04 

sudo apt-get install python3-pip

sudo pip install virtualenv

virtualenv-3.4 --no-site-packages venv
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.