virtualenv在安装setuptools时挂断

2024-05-23 17:47:26 发布

您现在位置:Python中文网/ 问答频道 /正文

直到最近才出现这个问题,但是当尝试创建一个新的虚拟环境(Windows7,Python2.7.13,virtualenv==15.1.0)时,它只是挂在“安装setuptools,pip,wheel…”上,执行一个crtl^c就可以:

PS C:\Users\John\Envs> virtualenv.exe rmapvenv
New python executable in C:\Users\John\Envs\test\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Traceback (most recent call last):
  File "c:\python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\virtualenv.exe\__main__.py", line 9, in <module>
  File "c:\python27\lib\site-packages\virtualenv.py", line 713, in main
    symlink=options.symlink)
  File "c:\python27\lib\site-packages\virtualenv.py", line 945, in create_environment
    download=download,
  File "c:\python27\lib\site-packages\virtualenv.py", line 901, in install_wheel
    call_subprocess(cmd, show_stdout=False, extra_env=env, stdin=SCRIPT)
  File "c:\python27\lib\site-packages\virtualenv.py", line 769, in call_subprocess
    line = stdout.readline()
keyboardInterrupt

在virtualenv.py中添加一些打印语句可以得到以下结果:

Running command C:\Users\John\Envs\test\Scripts\python.exe - setuptools pip wheel

Collecting setuptools

  Using cached setuptools-35.0.1-py2.py3-none-any.whl

Collecting pip

Collecting wheel

好像挂在轮子上了


Tags: pipinpyvirtualenvmainlibpackagesline
3条回答

使用-v开关获取详细输出。

对我来说,这是一个网络连接。具体地说,我试图使用的服务器virtualenv是通过防火墙从Internet上获取的,我需要通过代理服务器离开。除此之外,virtualenv似乎不遵守环境中的代理设置,并且它没有命令行开关。

因此,使用pip预缓存/预下载所需的3个包:

sudo pip download setuptools pip wheel --proxy http://<yourproxyhere>

然后您可以运行virtualenv,它将使用您刚刚下载的缓存包。

一切似乎都是围绕着轮子转,所以如果有人能解释,请做。这就是我安装它所做的。我跑了:

virtualenv venv --no-wheel

然后,激活我的虚拟环境并运行:

pip install --upgrade pip
pip install setuptools --no-use-wheel --upgrade
pip install wheel --no-cache

据我所知,一切正常

我也遇到了这个问题,上面的答案都不起作用。结果是一个错误的缓存条目。

使用$ virtualenv -vv venv我将得到以以下结尾的输出:

Running command /Users/ghartmann/cod...test/venv/bin/python - setuptools pip wheel
Collecting setuptools
    Cache entry deserialization failed, entry ignored

它会在那里阻塞,然后当您中断时,您会看到堆栈指示它被阻塞下载wheel包。

在macos上,pip缓存在这里:~/Library/Caches/pip
删除该目录修复了该问题,因为它能够重新初始化缓存。

相关问题 更多 >