windows 7上的virtualenv返回AssertionError

Lar*_*tel 15 python virtualenv windows-7

在Windows 7上遇到virtualenv问题.

我跑:

virtualenv _testenv
Run Code Online (Sandbox Code Playgroud)

它返回:

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']
Run Code Online (Sandbox Code Playgroud)

我有以下环境变量:

PYTHONHOME=C:\Python27
PYTHONPATH=c:\Python27;c:\Python27\Lib
PYTHONSTARTUP=C:\Users\Larry\.pythonrc
PATH=%PYTHONHOME%\;%PYTHONHOME%\Scripts;etc
Run Code Online (Sandbox Code Playgroud)

安装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
Run Code Online (Sandbox Code Playgroud)

我更新了PYTHONPATH = C:\ Python27; C:\ Python27\Lib仍在寻找解决方案,我发现并删除了AppData/Python*.重新安装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
Run Code Online (Sandbox Code Playgroud)

我攻击了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']
Run Code Online (Sandbox Code Playgroud)

以上

import _socket
Run Code Online (Sandbox Code Playgroud)

原因是我能够从直接的python提示导入套接字!因此填补了我现有的道路.我还没有缩小到哪个目录让它开心.它至少会向其他人透露为什么我没有它就会收到错误.

想法?建议?谢谢.:)


我攻击了Lib/socket.py并插入:

import sys
sys.path.append('C:\\Python27\\DLLs')
Run Code Online (Sandbox Code Playgroud)

以上

import _socket
Run Code Online (Sandbox Code Playgroud)

Mik*_*tes 30

3岁的问题,但希望这个答案仍然可以帮助某人.您可以在设置虚拟环境时将路径传递给Python安装,而不是设置环境变量(这对我来说神秘不起用).在Windows中,你必须找到python.exe,但似乎在Linux/OS X中你只是路径到该文件夹​​.例子:

视窗:

virtualenv -p <PATH TO PYTHON.EXE> venv
Run Code Online (Sandbox Code Playgroud)

Linux的/ Mac的:

virtualenv -p </user/path/to/python> venv
Run Code Online (Sandbox Code Playgroud)

两者都在当前目录中的子文件夹"venv"中创建虚拟环境.


oji*_*jii 13

尝试设置PYTHONPATHPYTHONPATH=C:\Python27;C:\Python27\Lib(开头的大写C).

这可以通过键入命令提示符来完成set PYTHONPATH=C:\Python27;C:\Python27\Lib.

PYTHONPATH 一旦命令提示符窗口关闭,它将恢复到之前的状态.


Tom*_*der 5

当前有一个类似的问题,显示错误:

AssertionError: Filename C:\Python27\Lib\os.py does not start with any of 
these prefixes: ['C:\\python27']
Run Code Online (Sandbox Code Playgroud)

区别在于'C:\ python27'为小写字母。因此,问题表现为无法安装新的virtualenv或制作嵌套的virtualenvs(有时我们会进行测试)。原因在于PYTHONPATH的内容

PYTHONPATH=C:\Python27;C:\Python27\Lib
Run Code Online (Sandbox Code Playgroud)

由于某种原因,virtualenv.py中的sys.path将返回c:\ python27,但是所需模块的路径将来自PYTHONPATH并以'C:\ Python27 \ Lib'开头,因此会引发断言错误。

长话短说,只需取消PYTHONPATH即可