복붙노트

[PYTHON] 윈도우 7 virtualenv 반환 AssertionError

PYTHON

윈도우 7 virtualenv 반환 AssertionError

Windows 7에서 virtualenv에 문제가 있습니다.

난 달린다:

virtualenv _testenv

다음을 반환합니다.

Traceback (most recent call last):
  File "C:\Python27\Scripts\virtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.5.2', 'console_scripts', 'virtualenv')()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 558, in main
    prompt=options.prompt)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 647, in create_environment
    site_packages=site_packages, clear=clear))
  File "C:\Python27\lib\site-packages\virtualenv.py", line 771, in install_python
    copy_required_modules(home_dir)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 725, in copy_required_modules
    dst_filename = change_prefix(filename, dst_prefix)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 710, in change_prefix
    (filename, prefixes)
AssertionError: Filename c:\Python27\Lib\os.py does not start with any of these prefixes: ['C:\\Python27']

다음 환경 변수가 있습니다.

PYTHONHOME=C:\Python27
PYTHONPATH=c:\Python27;c:\Python27\Lib
PYTHONSTARTUP=C:\Users\Larry\.pythonrc
PATH=%PYTHONHOME%\;%PYTHONHOME%\Scripts;etc

ActiveState Python 설치 :

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win32

PYTHONPATH = C : \ Python27; C : \ Python27 \ Lib을 업데이트했습니다. 솔루션을 찾으면서 AppData / Python *을 찾아 제거했습니다. 파이썬을 다시 설치했는데 이제는 다른 오류가 있습니다 :

C:\xbz>virtualenv _t
PYTHONHOME is set.  You *must* activate the virtualenv before using it
Overwriting _t\Lib\site.py with new content
New python executable in _t\Scripts\python2.7.exe
Not overwriting existing python script _t\Scripts\python.exe (you must use _t\Scripts\python2.7.exe)
Overwriting _t\Lib\distutils\__init__.py with new content
Installing setuptools..............
  Complete output from command C:\xbz\_t\Scripts\python2.7.exe -c "#!python
\"\"\"Bootstrap setuptoo...


" --always-copy -U setuptools:
  Traceback (most recent call last):
  File "<string>", line 278, in <module>
  File "<string>", line 210, in main
  File "<string>", line 132, in download_setuptools
  File "C:\Python27\Lib\urllib2.py", line 94, in <module>
    import httplib
  File "C:\Python27\Lib\httplib.py", line 71, in <module>
    import socket
  File "C:\Python27\Lib\socket.py", line 47, in <module>
    import _socket
ImportError: No module named _socket
----------------------------------------
...Installing setuptools...done.
Traceback (most recent call last):
  File "C:\Python27\Scripts\virtualenv-script.py", line 9, in <module>
    load_entry_point('virtualenv==1.5.2', 'console_scripts', 'virtualenv')()
  File "C:\Python27\lib\site-packages\virtualenv.py", line 558, in main
    prompt=options.prompt)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 654, in create_environment
    install_setuptools(py_executable, unzip=unzip_setuptools)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 384, in install_setuptools
    _install_req(py_executable, unzip)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 360, in _install_req
    cwd=cwd)
  File "C:\Python27\lib\site-packages\virtualenv.py", line 624, in call_subprocess
    % (cmd_desc, proc.returncode))
OSError: Command C:\xbz\_t\Scripts\python2.7.exe -c "#!python
\"\"\"Bootstrap setuptoo...




" --always-copy -U setuptools failed with error code 1

나는 Lib / socket.py를 해킹하고 삽입했다.

import sys
sys.path = ['', 'C:\\Python27\\lib\\site-packages\\dotcloud-0.3.1-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\dotcloud.cli-0.3.1-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\flask-0.7dev_20110622-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\werkzeug-0.6.2-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\gunicorn-0.12.2-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\wtforms-0.6.3-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\repoze.browserid-0.3-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\paste-1.7.5.1-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\django_pjax-1.0-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\paramiko-1.7.7.1-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\pycrypto-2.4.1-py2.7-win32.egg', 'C:\\Python27', 'C:\\Python27\\Lib', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\PIL', 'C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\Pythonwin', 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg-info', 'C:\\Python27\\Scripts', 'C:\\Python27\\Lib\\site-packages\\django\\bin']

import _socket

그 이유는 직선적 인 파이썬 프롬프트에서 소켓을 가져올 수 있었기 때문입니다! 그래서 내 기존 경로를 박제. 정확히 어느 디렉토리에서 행복하게 만들 었는지 정확하게 파악하지 못했습니다. 그것은 적어도 다른 사람에게 내가 왜 그 오류가 없는지를 알려줄 것입니다.

아이디어? 제안? 고맙습니다. :)

나는 Lib / socket.py를 해킹하고 삽입했다.

import sys
sys.path.append('C:\\Python27\\DLLs')

import _socket

해결법

  1. ==============================

    1.3 년 된 질문이지만 잘하면이 대답은 여전히 ​​누군가를 도울 수 있습니다. 신비하게도 작동하지 않는 환경 변수를 설정하는 대신 가상 환경을 설정할 때 Python 설치 경로를 전달할 수 있습니다. Windows에서는 python.exe로 경로를 지정해야하지만 Linux / OS X에서는 폴더로 경로가 지정됩니다. 예 :

    3 년 된 질문이지만 잘하면이 대답은 여전히 ​​누군가를 도울 수 있습니다. 신비하게도 작동하지 않는 환경 변수를 설정하는 대신 가상 환경을 설정할 때 Python 설치 경로를 전달할 수 있습니다. Windows에서는 python.exe로 경로를 지정해야하지만 Linux / OS X에서는 폴더로 경로가 지정됩니다. 예 :

    Windows :

    virtualenv -p <PATH TO PYTHON.EXE> venv
    

    Linux / Mac :

    virtualenv -p </user/path/to/python> venv
    

    두 가지 모두 현재 디렉토리의 하위 디렉토리 인 "venv"에 가상 환경을 만듭니다.

  2. ==============================

    2.PYTHONPATH를 PYTHONPATH = C : \ Python27; C : \ Python27 \ Lib (시작시 대문자 C)로 설정하십시오.

    PYTHONPATH를 PYTHONPATH = C : \ Python27; C : \ Python27 \ Lib (시작시 대문자 C)로 설정하십시오.

    이것은 명령 프롬프트에서 set PYTHONPATH = C : \ Python27; C : \ Python27 \ Lib을 입력하여 수행 할 수 있습니다.

    PYTHONPATH는 명령 프롬프트 창이 닫히면 이전 상태로 되돌아갑니다.

  3. ==============================

    3._socket 오류의 경우 pythonpython 경로를 다음과 같이 변경하십시오.

    _socket 오류의 경우 pythonpython 경로를 다음과 같이 변경하십시오.

    PYTHONPATH=C:\Python27;C:\Python27\Lib;C:\Python27\DLLs
    
  4. ==============================

    4.현재 유사한 오류가있는 문제가 있습니다.

    현재 유사한 오류가있는 문제가 있습니다.

    AssertionError: Filename C:\Python27\Lib\os.py does not start with any of 
    these prefixes: ['C:\\python27']
    

    차이점은 소문자 인 'C : \ python27'에 있습니다. 따라서 문제는 새로운 virtualenv를 설치하거나 중첩 된 virtualenvs를 만들 수 없다는 점에서 그 자체가 명백합니다 (우리는 때로는 테스트를 위해 그것을합니다). 원인은 PYTHONPATH의 본질에 있습니다.

    PYTHONPATH=C:\Python27;C:\Python27\Lib
    

    어떤 이유로 virtualenv.py의 sys.path는 c : \ python27을 반환하지만 필수 모듈의 경로는 PYTHONPATH에서 시작하여 'C : \ Python27 \ Lib'로 시작하므로 어설 션 오류가 발생합니다.

    짧게 이야기하면 PYTHONPATH의 설정을 해제하십시오.

  5. ==============================

    5.나는 추가했다.

    나는 추가했다.

    if is_win:    
            prefixes.append('C:\PYTHON27')    
    

    virtualenv.py로 보내면 작동합니다.

  6. ==============================

    6.그것의 이상하지만 오류 메시지에서

    그것의 이상하지만 오류 메시지에서

    AssertionError: Filename c:\Python27\Lib\os.py does not start with any of these prefixes: ['C:\\Python27']
    

    파일 os.py의 경로 이름이 대문자 'C'로 시작하고 접두사 온 전성 검사가 대소 문자를 구별합니다.

    라이브러리 경로가 PYTHONPATH에서 파생되었으므로 드라이브 문자가 소문자 인 경우이를 해결하기 위해 대문자로 변경하는 것이 논리적 인 것처럼 보입니다.

    처럼

    PYTHONPATH=C:\Python27;C:\Python27\Lib
    
  7. ==============================

    7.나는 "요약"답변을 싫어하지만, 방금 비슷한 문제를 겪었을 때, 나는이 해결책 중 몇 가지를 끌어 당기고 여기서도 내 해결책을 게시 할 것이라고 생각했다.

    나는 "요약"답변을 싫어하지만, 방금 비슷한 문제를 겪었을 때, 나는이 해결책 중 몇 가지를 끌어 당기고 여기서도 내 해결책을 게시 할 것이라고 생각했다.

    전체 PYTHONPATH 환경 변수는 다음과 같습니다.

    PYTHONPATH=C:\Python27;C:\Python27\Lib;C:\Python27\DLLs
    
  8. ==============================

    8.이것은 Python 개발팀에 이미 제출 된 오류입니다 : https://github.com/pypa/virtualenv/pull/697

    이것은 Python 개발팀에 이미 제출 된 오류입니다 : https://github.com/pypa/virtualenv/pull/697

    그 사이에 파이썬 설치 폴더 이름을 (ptyhon27)로 바꾸어서 어설 션을 작동시키지 않거나 다른 위치를 사용하여 파이썬을 다시 설치하는 것이 더 편하다고 생각한다면 왜 그렇습니까? 그것은 문제없이 작동합니다.

  9. ==============================

    9.다음을 시도 할 수 있습니다 (파이썬이 전역 경로에 있다고 가정하십시오).

    다음을 시도 할 수 있습니다 (파이썬이 전역 경로에 있다고 가정하십시오).

    python -m virtualenv [foldername]
    

    이것은 나를 위해, 승 10, virtualenv 15.1.0 작동

    나는이 비디오에서 그것을 얻는다. 그것은 exe 윈도우를 호출하는 대신 파이썬 lib를 실행할 것이다.

  10. ==============================

    10.또한 Windows 7에서이 문제가 발생했습니다. Python27 설치가 C : \ Program Files 아래에 있었는데 경로에 공백이 포함되어 있습니다. 따라서 Python을 포함하지 않는 별도의 Windows 7 시스템에서 C : \ Python27 (기본 설치 경로) 아래에 Python27을 새로 설치 한 다음 setuptools (easy_install 용)를 설치합니다.

    또한 Windows 7에서이 문제가 발생했습니다. Python27 설치가 C : \ Program Files 아래에 있었는데 경로에 공백이 포함되어 있습니다. 따라서 Python을 포함하지 않는 별도의 Windows 7 시스템에서 C : \ Python27 (기본 설치 경로) 아래에 Python27을 새로 설치 한 다음 setuptools (easy_install 용)를 설치합니다.

    그 후에 위의 어설 션 오류없이 virtualenv를 간단하게 설치할 수있었습니다 (필자는 easy_install을 사용했습니다).

    나는 OP 시스템이 이미 기본 경로를 사용하고 있다는 것을 알고 있지만 특정 경험에 대한 가능한 솔루션으로 경험을 추가 할 것이라고 생각했습니다.

  11. ==============================

    11.이 문제는 다른 대소 문자를 구별하는 파일 시스템의 숙취 일 것으로 추정됩니다.

    이 문제는 다른 대소 문자를 구별하는 파일 시스템의 숙취 일 것으로 추정됩니다.

    완벽한 솔루션 :

    이 버그를 수정하기 위해 내가 한 유일한 변화는 다음과 같습니다. 변경 사항은 새로운 명령 / 터미널 세션 (열려있는 cmd.exe / powershell / 등 창을 닫음)에 적용됩니다.

    PYTHONPATH에 다른 항목이 있다면 그 항목도 변경할 수 있지만 virtualenv의 실행 가능성에는 영향을 미치지 않습니다.

  12. ==============================

    12."virtualenv.py"-> change_prefix를 다음과 같이 변경하십시오 :

    "virtualenv.py"-> change_prefix를 다음과 같이 변경하십시오 :

    def change_prefix(filename, dst_prefix):
      ...
     prefixes = sorted(prefixes, key=len, reverse=True)
     filename = str(os.path.abspath(filename))[0].lower() + str(os.path.abspath(filename))[1:]
     for src_prefix in prefixes:
        if filename.startswith(src_prefix):
            _, relpath = filename.split(src_prefix, 1)
            if src_prefix != os.sep: # sys.prefix == "/"
                assert relpath[0] == os.sep
                relpath = relpath[1:]
            return join(dst_prefix, relpath)
     assert False, "Filename %s does not start with any of these prefixes: %s" % \
        (filename, prefixes)
    
      ...
    
  13. ==============================

    13.나는 약간 다른 원인에서 동일한 주장 오류가있었습니다. 이 오류는 [ 'C : \\ python27']과 'p'소문자로 시작하지 않습니다. 실제 폴더 이름은 모두 capital-P Python27을 사용합니다. PTYHONPATH의 모든 접두어가 정확했습니다. 그러나 PYTHONHOME 변수를 C : \ python27로 입력했는데 파이썬에서는 괜찮 았지만 virtualenv에서 오류가 발생했습니다.

    나는 약간 다른 원인에서 동일한 주장 오류가있었습니다. 이 오류는 [ 'C : \\ python27']과 'p'소문자로 시작하지 않습니다. 실제 폴더 이름은 모두 capital-P Python27을 사용합니다. PTYHONPATH의 모든 접두어가 정확했습니다. 그러나 PYTHONHOME 변수를 C : \ python27로 입력했는데 파이썬에서는 괜찮 았지만 virtualenv에서 오류가 발생했습니다.

  14. from https://stackoverflow.com/questions/8688709/virtualenv-on-windows-7-returns-assertionerror by cc-by-sa and MIT license