【问题标题】:virtualenv hung up on installing setuptoolsvirtualenv 挂断了安装 setuptools
【发布时间】:2017-09-21 19:18:11
【问题描述】:

直到最近才出现这个问题,但是当尝试创建一个新的虚拟环境(windows 7、python 2.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

好像挂在轮子上

【问题讨论】:

  • 据我所知,这只是表明程序正在等待它调用的命令的输出。 call_subprocess 接受一个命令(如cmd)并执行它,并读取该进程的标准输出。您可以在此处看到它正在等待整行写入。您能否尝试在调试器中运行它并获取cmd 的值,这应该表明子进程确实挂起。
  • 用更多细节更新了原始问题。
  • 嗨,John 尝试创建 virtualenv 给这个可执行的 python 路径,如下所示:virtualenv --python=C:\Python27\python.exe env 我正在使用 Windows 10 virtualenv 13,但我认为这无关紧要
  • 产生相同的结果

标签: python windows python-2.7 powershell virtualenv


【解决方案1】:

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

virtualenv venv --no-wheel

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

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

据我所知,一切正常

【讨论】:

    【解决方案2】:

    我不确定它是否会有所帮助,但我遇到了完全相同的问题,尽管在 linux debian(准确地说是 raspbian Jessie light)和 python 3.6 上。 Wheel 在创建 virtualenv 时挂起,在 ctrl-c (使用 python 3.6 和 linux 路径)之后,我收到了与您相同的错误消息。然后我没有注意到互联网连接问题,解决这些问题后,轮子安装正确。

    【讨论】:

      【解决方案3】:

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

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

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

      sudo pip download setuptools pip wheel --proxy http://&lt;yourproxyhere&gt;

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

      【讨论】:

        【解决方案4】:

        我也遇到了这个问题,上面的答案都没有奏效。原来是一个错误的缓存条目。

        使用$ 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.
        删除该目录解决了这个问题,因为它能够重新初始化缓存。

        【讨论】:

          【解决方案5】:

          我正在使用 pipenv 安装一个 venv :

          $ pipenv install
          Creating a virtualenv for this project…
          Pipfile: /home/seba/Sources/neogeo/grandlyon/photon-setup/Pipfile
          Using /usr/bin/python3 (3.6.7) to create virtualenv…
          ⠦ Creating virtual environment...
          

          详细模式没有给我更多信息,--clear 没用,但使用ps auxf 我看到 oython 进程什么都不等:

           [...] S+   09:59   0:00  |   |       \_ /home/seba/Sources/neogeo/grandlyon/photon-setup/venv/bin/python3 - setuptools pip wheel
          

          它停止安装 setuptools。

          像往常一样创建一个 virtualenv 向我证实了这一点:

          $ virtualenv -vv --python=python3 venv
          [...]
          Running command /home/seba/Sources/n...tup/venv/bin/python3 - setuptools pip wheel
          Looking in links: /usr/local/lib/python3.6/dist-packages/virtualenv_support
          Collecting setuptools
          [Waiting forever]
          

          修复是删除 pip 缓存:

          $ rm -Rf ~/.cache/pip/ ~/.cache/pip-tools/
          

          【讨论】:

            【解决方案6】:

            我在使用pipenv 的公司防火墙后面。即使 Pipfile 指向我们的本地包索引(不是 PyPi),pipenv 调用的 pip 仍在尝试使用 PyPi 并挂在

            /home/eric/.local/share/virtualenvs/venv/bin/python - setuptools pip wheel
            

            我的解决方案是在pip.conf 中设置索引URL 或使用PIP_INDEX_URL 环境变量,例如:

            PIP_INDEX_URL=http://my.corporate.index/simple pipenv lock
            

            【讨论】:

            • 我没有安装防火墙,但运行了 Open VPN。将其关闭,一切都按预期工作。
            猜你喜欢
            • 2013-10-26
            • 2016-06-20
            • 1970-01-01
            • 2015-06-08
            • 2013-06-13
            • 1970-01-01
            • 2013-10-11
            • 2014-03-11
            • 1970-01-01
            相关资源
            最近更新 更多