2011-05-06 2 views
6

저는 Ubuntu 10.04에서 Python 2.6.5로 virtualenv를 설정하려고하지만 몇 가지 문제가 있습니다.문제 Virtualenv 설정하기

PIP와 설치 VIRTUALENV 및 VIRTUALENV 래퍼를 가진 후, 명령을 실행 해요 : 나는 다시

Creating mysite-env/lib/python2.6 
Symlinking Python bootstrap modules 
    Symlinking mysite-env/lib/python2.6/lib-dynload 
    Symlinking mysite-env/lib/python2.6/config 
    Symlinking mysite-env/lib/python2.6/os.py 
    Ignoring built-in bootstrap module: posix 
    Symlinking mysite-env/lib/python2.6/posixpath.py 
    Cannot import bootstrap module: nt 
    Symlinking mysite-env/lib/python2.6/ntpath.py 
    Symlinking mysite-env/lib/python2.6/genericpath.py 
    Symlinking mysite-env/lib/python2.6/fnmatch.py 
    Symlinking mysite-env/lib/python2.6/locale.py 
    Symlinking mysite-env/lib/python2.6/encodings 
    Symlinking mysite-env/lib/python2.6/codecs.py 
    Symlinking mysite-env/lib/python2.6/stat.py 
    Symlinking mysite-env/lib/python2.6/UserDict.py 
    Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
    Symlinking failed, copying to mysite-env/lib/python2.6/lib-dynload/readline.so 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 9, in <module> 
    load_entry_point('virtualenv==1.6.1', 'console_scripts', 'virtualenv')() 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 795, in main 
    never_download=options.never_download) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 886, in create_environment 
    site_packages=site_packages, clear=clear)) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1020, in install_python 
    copy_required_modules(home_dir) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 974, in copy_required_modules 
    copyfile(filename, dst_filename) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 414, in copyfile 
    copyfileordir(src, dest) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 391, in copyfileordir 
    shutil.copy2(src, dest) 
    File "/usr/lib/python2.6/shutil.py", line 99, in copy2 
    copyfile(src, dst) 
    File "/usr/lib/python2.6/shutil.py", line 53, in copyfile 
    fdst = open(dst, 'wb') 
IOError: [Errno 20] Not a directory: 'mysite-env/lib/python2.6/lib-dynload/readline.so' 

실행하는 경우 : VIRTUALENV 내 사이트-ENV 나는 다음과 같은 오류가

을 --verbose 다음을 얻습니다 :

Directory mysite-env/lib/python2.6 already exists 
    Symlinking Python bootstrap modules 
     Ignoring built-in bootstrap module: posix 
     Cannot import bootstrap module: nt 
     Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
     Symlinking mysite-env/lib/python2.6/copy_reg.py 
     Symlinking mysite-env/lib/python2.6/types.py 
     Symlinking mysite-env/lib/python2.6/re.py 
     Symlinking mysite-env/lib/python2.6/sre.py 
     Symlinking mysite-env/lib/python2.6/sre_parse.py 
     Symlinking mysite-env/lib/python2.6/sre_constants.py 
     Symlinking mysite-env/lib/python2.6/sre_compile.py 
     Ignoring built-in bootstrap module: zlib 
     Symlinking mysite-env/lib/python2.6/warnings.py 
     Symlinking mysite-env/lib/python2.6/linecache.py 
     Symlinking mysite-env/lib/python2.6/_abcoll.py 
     Symlinking mysite-env/lib/python2.6/abc.py 
    Creating mysite-env/lib/python2.6/site-packages 
    Writing mysite-env/lib/python2.6/site.py 
    Writing mysite-env/lib/python2.6/orig-prefix.txt 
    Creating parent directories for mysite-env/include 
    Symlinking mysite-env/include/python2.6 
    Creating mysite-env/bin 
    New python executable in mysite-env/bin/python 
    Changed mode of mysite-env/bin/python to 0755 
    Testing executable with mysite-env/bin/python -c "import sys; print(sys.prefix)" 
    ERROR: The executable mysite-env/bin/python is not functioning 
    ERROR: It thinks sys.prefix is u'/usr' (should be '/vagrant/mysite-env') 
    ERROR: virtualenv is not compatible with this system or executable 

어떤 문제를 해결할 수 있습니까? 감사!

+0

게시 해 주셔서 감사합니다. 그것은 방랑자에 대한 검토 게시판을 설치하려고 엉덩이에서 완전히 나를 물었다. 디렉토리로/var/www가 생겼으니 괜찮습니다. –

답변

0

나는이 특정 문제를 해결하지 못했지만 개인적으로 virtualenvpythonbrew으로 변경했습니다. pythonbrew은 같은 문제에 대한 다른 해결책입니다. Ruby 커뮤니티에서 rvm과 같은 기능을합니다 : 완전히 자체 포함 된 Python 버전을 처음부터 다시 빌드합니다 ($HOME/.pythonbrew; 그런 다음 쉘 기능을 제공하여 하나에서 다른 것으로 쉽게 전환 할 수 있습니다 (경로 편집 등). virtualenv과 같이 가볍지는 않지만 시스템 파이썬에는 피기 백 (piggyback)되지 않으므로 전체 심볼릭 링크 문제가 사라집니다. 기본 시스템에 여러 Python 버전이 설치되어 있지 않아도 여러 버전을 설치할 수 있습니다.

귀하의 마일리지는 물론 다를 수 있지만 pythonbrew은 저에게 잘 부합합니다.

+1

시스템에 * 설치되어있는 모든 Python 버전에 대해 virtualenv를 사용할 수 있으며 --not-site-packages를 사용하여 시스템 전체 사이트 패키지를 무시할 수 있습니다. virtualenvwrapper와 결합하여 깨끗하고 깔끔하게 정리됩니다. Brian은 맞습니다. pythonbrew를 사용하면 시작하지 않을 Python 버전을 설치할 수 있습니다. – Henry

+0

동의. 나는 virtualenv가 여러 버전의 Python 환경을 만들 수 없다는 것을 의미하지는 않습니다. 나는 항상 그랬다. 그러나 그것은 근본적으로 이미 시스템에있는 것과 관련이 있습니다. 반면 pythonbrew는 그렇지 않습니다. 각각의 접근 방식에는 장점과 단점이 있습니다. 요즘 파이썬 브루어를 선호합니다. YMMV. –

2

이 오류는 사용중인 virtualenv.py 파일이 사용중인 python 버전과 호환되지 않기 때문에 발생합니다. python2.7의 경우 virtualenv.org 사이트에서 바이너리를 다운로드 한 다음 컴파일해야합니다 이 질문 때문에 설치 후

python setup.py install 

를 사용하여 설치된 바이너리 (안 virtualenv.py 파일)

virtualenv --no-site-packages <path to virtual env directory>/env/ 
5

에 의해 가상 환경을 만드는 데 사용은되어 조금처럼 보인다./vagrant 디렉토리에 대한 Virtualbox의 파일 드라이버는 virtualenv가 많이 사용하는 심볼 링크를 인식 할 수 없습니다.

이것은 가장 간단한

mybox:/vagrant$ ln -s ~/.bashrc 
ln: failed to create symbolic link ./.bashrc': Protocol error` 

업데이트로 입증 할 수 있습니다

때문에 심볼릭 링크와 방랑의 호환성 & VIRTUALENV, 내 방랑 상자/인스턴스가 있었다 작업/프로젝트 별 (만 1 VIRTUALENV) . 그래서 방랑 호스트 측/인스턴스 폴더에 내가 파이썬에게 & VIRTUALENV를 설치하는 간단한 스크립트를 유지하는 것, 다음

pip install -r /vagrant/requirement 

또한 문서는 여기에서 찾을 수 있습니다 않습니다. https://docs.vagrantup.com/v2/provisioning/basic_usage.html

체크 (파이썬은 존재하지만,/home/vagrant/env가 있음) 체크를하면, 상자를 한 번 프로비저닝하고 ~/env 설치를 활성화하는 전화를 추가하여 로그인 할 때, 당신은 이미 준비하고 갈 준비가되어 있습니다.

+0

이 해결책은 무엇입니까? – stephenmurdoch

+0

나는 휴대 전화를 너무 간결합니다. 방글라데시 시스템의 경우 pip 요구 사항 파일을 지우고 홈 디렉토리 아래에 가상 환경을 두는 것이 가장 좋습니다. pips 캐싱 플래그를 사용하여 venv 자체가 아닌 직접적으로 venome 공유 디렉토리에 저장할 수 있습니다. – David

+0

맞춤법 오류 - 지프하지 말고 로컬 캐싱을/vagrant/py_fast 또는 공유 디렉토리 http : // pip에 저장할 수 있습니다. readthedocs.org/en/latest/user_guide.html#fast-local-installs 그래서 만약 당신이 파괴/재건해야 할 모든 업데이 트에 대한 pypi를 잘라낼 수 있습니다 (현실은 당신이 자주 업데이 트되지 않습니다 당신은 요구 사항이있다 파일). – David

1

이 문제는 이미 여러 가지 답변이 있지만 다음 해결책이 될 경우를 대비하여 해결책을 공유하고 싶습니다.

여기서 나는 명령을 실행합니다./vagrant 공유 폴더에서 virtualenv env 명령을 실행했습니다. 그건 내 실수 였어. 내 홈 디렉토리로 돌아가서 virtualenv env를 실행하면 모든 것이 정상적으로 작동합니다.

+0

/vagrant에있는 파이썬 응용 프로그램이 홈 디렉토리의 가상 env를 사용하도록하려면 어떻게해야합니까? 내부/유행 디렉토리에서 실행할 때/home/vagrant/env 디렉토리에서 tox를 보려고합니다. – stephenmurdoch

+0

"source ~/venv_name/bin/activate"을 실행합니다. 응용 프로그램 코드는 "/ vagrant/webapps/app_name " 나는 독극물을 한번도 사용하지 못했지만 이것은 또는 당신이 단지 ../../ 거기에있을 때까지는 가능하다고 생각합니까? –