【问题标题】:pyvenv-3.4 returned non-zero exit status 1pyvenv-3.4 返回非零退出状态 1
【发布时间】:2014-07-30 03:54:33
【问题描述】:

我在 Kubuntu 14.04,我想用 python3.4 创建一个 virtualenv。我之前在其他文件夹中使用过 python2.7。但是当我尝试时:

pyvenv-3.4 venv

我有:

Error: Command '['/home/fmr/projects/ave/venv/bin/python3.4', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

【问题讨论】:

  • 这里给出解决方案:askubuntu.com/questions/488529/…
  • 我遇到了这个问题,原来我需要在配置、制作和安装Python3之前安装libffi-devel。这样做之后,我的点子问题就解决了。

标签: python unix python-3.x virtualenv


【解决方案1】:

我得到了一个安装 python-virtualenv 的解决方案

sudo apt-get install python-virtualenv

并使用

virtualenv --python=/usr/bin/python3.4 venv

【讨论】:

  • 为什么一定要提供完整路径?
  • @ThePassenger:至少在我的情况下,你没有。
  • E: 包'python-virtualenv'没有安装候选
  • 注意virtualenvvenv不一样
【解决方案2】:

Pyvenv 与较新版本的 python 3 捆绑在一起,应该会取代 virtualenv,所以它并不完全相同。

在 Ubuntu 14.04 的第一个版本中,python 3.4 存在一些问题,导致此错误。

升级发行版为我解决了这个问题。我想它可能也适用于 Kubuntu。

sudo do-release-upgrade -d # this takes a while, and involves a reboot as well. 
sudo apt-get install python3.4-venv
pyvenv-3.4 venv

在运行之前请阅读the docs for do-release-upgrade。使用 -d 标志将升级到最新的开发版本,其中可能包含一些不稳定的软件。

您无法撤消 do-release-upgrade

【讨论】:

  • 请注意,将发行版升级到开发版也会更新其他软件。所以这个解决方案可能会有副作用。
  • 很高兴提到这一点。我已经在运行 Ubuntu 14.10 但安装 python3.4-venv 特别解决了这个问题。
  • 对我来说,sudo apt-get install python3.4-venv 部分也足够了。
  • 在这里升级你的发行版是大材小用。
【解决方案3】:

Linux Mint 17(基本上是 Ubuntu 14.04)上的同样问题。安装python3.4-venv没有用,所以我创建了没有pip的virtualenv,然后手动安装了pip。

  1. 创建 virtualenv 并激活它

    python3 -m venv --without-pip foo
    source foo/bin/activate
    
  2. 下载setuptoolspip的最新版本:

    wget https://pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz#md5=6245d6752e2ef803c365f560f7f2f940
    wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#md5=01026f87978932060cc86c1dc527903e
    
  3. 解压并安装它们

    tar xf setuptools-7.0.tar.gz
    tar xf pip-1.5.6.tar.gz
    cd setuptools-7.0
    python setup.py install
    cd ../pip-1.5.6
    python setup.py install
    

【讨论】:

  • 感谢您的解决方案。为我工作。我安装了 pip 和 setuptools 以及这样的命令: wget bootstrap.pypa.io/get-pip.py -O - |蟒蛇
【解决方案4】:

以下内容在 Ubuntu 13.10 上对我有用:

pyvenv-3.4 delme --without-pip
source delme/bin/activate
python -Im ensurepip --upgrade --default-pip

【讨论】:

  • 上面写着/tmp/delme/bin/python: No module named ensurepip
【解决方案5】:

我遇到过这个问题。

为了调查,我执行了与 pyvenv 相同的命令,然后我得到“locale.Error: unsupported locale setting”。

终于通过配置“LC_ALL=en_US.UTF-8”解决了。

【讨论】:

    【解决方案6】:

    这是一个与操作系统无关的解决方案

    pyvenvpython 命令本身都包含一个--without-pip 选项,可让您解决此问题;无需诉诸setuptool 或其他令人头疼的问题。记下我下面的inline comments,这是怎么做的,很容易理解:

    user$ pyvenv --without-pip ./pyvenv.d          # Create virtual environment this way;
    user$ python -m venv --without-pip ./pyvenv.d  # --OR-- this newer way. Both work.
    
    user$ source ./pyvenv.d/bin/activate  # Now activate this new virtual environment.
    (pyvenv.d) user$
    
    # Within it, invoke this well-known script to manually install pip(1) into /pyvenv.d:
    (pyvenv.d) user$ curl https://bootstrap.pypa.io/get-pip.py | python
    
    (pyvenv.d) user$ deactivate           # Next, reactivate this virtual environment,
    user$ source ./pyvenv.d/bin/activate  # which will now include the pip(1) command.
    (pyvenv.d) user$
    
    (pyvenv.d) user$ which pip            # Verify that pip(1) is indeed present.
    /path/to/pyvenv.d/bin/pip
    
    (pyvenv.d) user$ pip install --upgrade pip # And finally, upgrade pip(1) itself;
    (pyvenv.d) user$                           # although it will likely be the
                                               # latest version. And that's it!
    

    我希望这会有所帮助。 (◠﹏◠)/

    【讨论】:

    • 在手动安装 Python 3.3 的 Debian Wheezy 上不起作用:venv: error: unrecognized arguments: --without-pip
    【解决方案7】:

    与@prismalytics.io 非常相似,但适用于那些不喜欢从 Web 运行 shell 脚本的人。当然,您可以使用 --no-index --find-links 指向本地副本。任何最近的 pip 轮文件就足够了,这只是指向 PyPI 上的当前版本。

    python3 -m venv --without-pip your_venv
    source your_venv/bin/activate
    curl 'https://pypi.python.org/packages/b6/ac/7015eb97dc749283ffdec1c3a88ddb8ae03b8fad0f0e611408f196358da3/pip-9.0.1-py2.py3-none-any.whl' > pip.whl
    python -m zipfile -e pip.whl $VIRTUAL_ENV/lib/python3*/site-packages
    python -m pip install --force-reinstall --upgrade pip
    

    【讨论】:

      【解决方案8】:

      您缺少 python 3.4 的 venv 库,只需运行:

      $ apt-get install python3.4-dev python3.4-venv
      

      然后创建你的虚拟环境

      python3.4 -m venv myVenv
      

      【讨论】:

      • E: 安装时无法通过正则表达式 'python3.7-venv' 找到任何包
      • @indrajitnarvekar,python3.7 尚未在默认存储库中。您可以使用死蛇 PPA。有关详细信息,请参阅此问题:askubuntu.com/questions/865554/…。 Python 3.7 也可用于此 PPA,因此答案也适用于它。
      • 这是最好的解决方案!不安装不同的产品(virtualenv 与 venv)或绕过 APT 进行安装。
      • 这个答案也适用于 Python3.8 -- 只需安装 python3.8-dev 和 python3.8-venv
      • Python 3.9 也可以:apt install python3.9-dev python3.9-venv.
      【解决方案9】:

      这在 python 3.6 和 OSX 中对我有用

      $ python -m venv --without-pip my_dir
      $ source my_dir/bin/activate
      $ curl https://bootstrap.pypa.io/get-pip.py | python
      $ deactivate
      $ source my_dir/bin/activate
      (my_dir) user$
      

      【讨论】:

        【解决方案10】:

        LMDE2 上使用:

        • Python 3.4.2
        • Debian_版本:8.11

        第一次在这台机器上使用python,遇到了这个问题:

        freezed@machine ~/git/repo % python3 -m venv .venv                            
        Error: Command '['/home/freezed/git/repo/.venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1
        zsh: exit 1     python3 -m venv .venv
        

        我解决了这个问题:

        sudo apt-get install python3.4-venv

        【讨论】:

          【解决方案11】:

          我也遇到了同样的问题。

          [niraj@abc ~]$/python/v3.7.0/bin/python3 -m venv avd
          Error: Command '['/home/niraj/avd/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
          

          在我的 LD_LIBRARY_PATH 上添加 libffi3.3 后,它就可以工作了

          setenv LD_LIBRARY_PATH /libffi/v3.3/lib64

          【讨论】:

          • LD_LIBRARY 在哪里?
          【解决方案12】:

          我在 Ubuntu 16.04 中安装 psutil 时遇到以下问题:

          psutil (setup.py) 的构建轮...错误

          这些是我的有效步骤:

          检查您的 Python 版本。 (我的 Python 版本是 3.7)

          然后在下面的附加步骤中执行此操作:

          sudo apt-get install python3.7-dev
          

          然后

          pip install psutil 
          
          source ./my_venv_dir/bin/activate
          
          pip install --upgrade pip
          

          【讨论】:

            【解决方案13】:

            对于阅读这篇文章的 Windows 用户,请按照以下步骤操作:-

            您可以通过运行以下命令确保 pip 是最新的: python -m pip install --upgrade pip

            运行以下命令安装 virtualenv: python -m pip install --user virtualenv

            最后创建环境使用 python -m virtualenv <your env name>

            【讨论】:

            • 我在使用 python 3.6.12 的 sles15sp2 上遇到了这个问题这个解决方法对我很有效。
            • 我使用的是 Windows,也遇到了这个错误。对我来说,导致问题的原因是我的 Python 项目根目录中有一个名为“copy.py”的 Python 文件。将文件重命名为独特的名称为我解决了这个问题。
            • 注意 这是针对 python 2.7 的。激活您的 venv 并在之后检查版本。你可能会对旧的 python 感到惊讶
            【解决方案14】:

            这是我的错误解决方案:

            $ python3.6 -m venv venv

            失败的命令:['/venv/bin/python3.6', '-Im', 'ensurepip', '--upgrade', '--default-pip']

            解决方案:

            $ rm -rf venv
            $ apt install python3.6-venv
            $ python3.6 -m venv venv
            

            【讨论】:

              【解决方案15】:

              只需运行命令:

              $ apt-get install python3-venv
              

              然后通过运行创建您的虚拟环境:

              $ python3.6 -m venv
              

              【讨论】:

              • 对于 ubuntu20.04 & python3.10 -> sudo apt install python3.10-venv
              【解决方案16】:

              这是一个疯狂的边缘情况,但是如果您在使用 python3.9 创建虚拟环境时在工作目录中有一个名为 csv.py 的文件,则 ensurepip 将失败。

              删除或重命名文件,应该会成功

                  $ touch csv.py
                  $ python3.9 -m venv venv
                  Error: Command '['/test/venv/bin/python3.9', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
                  $ rm -rf venv/
                  $ rm csv.py 
                  $ python3.9 -m venv venv
                  $ ls venv/
                  bin/        include/    lib/        pyvenv.cfg
              
              

              【讨论】:

                【解决方案17】:

                我遇到了由一个非常不同的问题引起的非常相似的错误。我们使用 SLURM 作为计算机集群上的工作负载管理器。因此,我们“有用地”设置TMPDIR 以确保用户不会填满计算节点上的本地文件系统。

                在我的情况下,它归结为venv:__init__.py:_setup_pip() 产生一个单独的子进程的问题。最初给出的错误具有欺骗性,因为调用子进程时会丢失真正的错误。

                遇到错误后,保持失败虚拟环境的状态不变,你可以聪明的在调试器中运行失败的命令(即子进程)。在我的情况下是

                python -m pdb -m ensurepip --upgrade --default-pip

                从那里您可以单步调试调试器并找出真正的问题所在。在我的情况下,它归结为pip/_internal/utils/temp_dir.py(来自安装尝试期间下载的轮子文件)中的某些内容,它试图创建一个相邻的目录,并且它与我们的TMPDIR 设置不太匹配。解决方案是设置export TMPDIR=/tmp,它工作得很好。

                显然,很可能存在与@kahonmlg 发布的错误非常相似的整个问题子集。正确调试生成的进程是解决这些问题的关键。在我的情况下,解决方案只是设置TMPDIR,但显然你的里程可能会有所不同。

                【讨论】:

                  【解决方案18】:

                  上述解决方案均无效。它归结为我目录中名为calendar.py 的python 文件。我的猜测是,由于 venv 进程认为我的 calendar.py 文件是 Python 的官方日历模块,因此可能发生了一些冲突。

                  无论如何,重命名文件后,问题就解决了。

                  【讨论】:

                    猜你喜欢
                    • 2017-05-16
                    • 1970-01-01
                    • 2014-01-13
                    • 2019-10-02
                    • 1970-01-01
                    • 2017-05-20
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-02-15
                    相关资源
                    最近更新 更多