【问题标题】:Error: Environment /Users/myuser/.virtualenvs/iron does not contain activation script错误:环境 /Users/myuser/.virtualenvs/iron 不包含激活脚本
【发布时间】:2020-05-31 18:36:55
【问题描述】:

我在 macOS Catalina 版本 10.15.1 上运行 python 3.7.6,我正在尝试安装和设置 virtualenvwrapper,我已使用 pip3 install virtualenvwrapper 安装。

我的 .bash_profile 中有以下几行:

export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/Users/maxcarey/Library/Python/3.7/bin/virtualenv
export WORKON_HOME=$HOME/.virtualenvs 
source /Users/maxcarey/Library/Python/3.7/bin/virtualenvwrapper.sh

这些是我遵循的配置步骤: https://stackoverflow.com/a/42643313/5420796。以及其他教程(like this one

所以你可以看到我正在尝试将这些导出变量指向​​正确的位置,在我的终端中,which python3 的输出是/usr/local/bin/python3 which virtualenv 的输出是:/Users/maxcarey/Library/Python/3.7/bin/virtualenv。 which virtualenvwrapper.sh 的输出是/Users/maxcarey/Library/Python/3.7/bin/virtualenvwrapper.sh

问题出在这里:当我运行:mkvirtualenv iron 来创建一个新的虚拟环境(在本例中称为 Iron)时,命令的输出是:

在 193 毫秒 CPython3Posix(dest=/Users/maxcarey/.virtualenvs/iron, clear=False, global=False) 中使用播种机 FromAppData pip=latest setuptools=latest wheel=latest app_data_dir=/Users/maxcarey/Library 创建虚拟环境/应用程序支持/virtualenv/seed-v1 via=copy virtualenvwrapper.user_scripts 创建 /Users/maxcarey/.virtualenvs/iron/bin/predeactivate 错误:环境“/Us​​ers/maxcarey/.virtualenvs/iron”不包含激活脚本。

您可以看到确实创建了一个虚拟环境,但是,我收到一条错误消息,说没有激活脚本。但是,当我导航到~/.virtualenvs 时,我确实可以看到激活脚本。这是tree 在新文件夹iron/local/ 中的输出:

└── local
    └── bin
        ├── activate
        ├── activate.csh
        ├── activate.fish
        ├── activate.ps1
        ├── activate.xsh
        ├── activate_this.py
        ├── easy_install
        ├── easy_install-3.7
        ├── easy_install3
        ├── pip
        ├── pip-3.7
        ├── pip3
        ├── python -> /Library/Developer/CommandLineTools/usr/bin/python3
        ├── python3 -> python
        ├── python3.7 -> python
        ├── wheel
        ├── wheel-3.7
        └── wheel3

确实似乎有激活脚本。所以我很困惑为什么我会收到激活脚本错误(我在运行workon iron 时也会遇到这个错误)。我尝试过使用rmvirtualenv iron 简单地破坏和重新创建虚拟环境,但是,当再次创建环境时,我仍然遇到相同的错误。谢谢你

【问题讨论】:

    标签: python-3.x virtualenv virtualenvwrapper


    【解决方案1】:

    我刚刚遇到这个问题,将我的 virtualenv 版本降级到 20.0.3 让我能够绕过这个问题。

    pip3 uninstall virtualenv && pip3 install 'virtualenv==20.0.3'

    【讨论】:

    • 感谢您的回答,按照您的步骤操作后仍然遇到上述完全相同的问题:(
    【解决方案2】:

    我正在使用 Python 3.7.3 运行 raspbian buster。我遇到了同样的问题,“错误...没有激活脚本”。我尝试了@Lombax 的答案,但没有奏效。

    但是,我注意到我安装的virtualenvwrapper 的版本是5.0.0。我检查了PyPi,它仍然是 4.8.4 版本。所以我卸载了 virtualenv 和 virtualenvwrapper:sudo pip3 uninstall virtualenv virtualenvwrapper

    然后我重新安装并指定了版本:sudo pip3 install virtualenv virtualenvwrapper=='4.8.4' 我找到了我的 .bashrc,我在其中附加了设置:

    VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
    export PATH=/usr/local/bin:$PATH
    export WORKON_HOME=~/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    

    现在mkvirtualenv test 有效。不知道 virtualenvwrapper 5.x 版的错误是什么,与此同时,这解决了我的问题,希望这会有所帮助。

    【讨论】:

    • 嗨@simon。感谢您的答复。就我而言,降级后我遇到了相同的激活脚本错误。需要注意的一点是,我没有使用sudo 来安装这些软件包,因为我遇到了另一个问题:stackoverflow.com/questions/33216679/…
    • 这适用于我的 opencv 4.2.0 和树莓派 4
    • 使用 opencv 3.3 将 virtualenvwrapper 降级到 4.8.4 为我工作
    【解决方案3】:

    我的解决方案是将export VIRTUALENVWRAPPER_ENV_BIN_DIR=usr/local/bin 添加到我的shell 启动文件调用virtualenvwrapper.sh 脚本之后。

    我在查看源代码并看到它在 usr/local/bin 中创建 activate 脚本后发现了此修复程序,但由于某种原因,virtualenvwrapper.sh 脚本仅在 bin 中查找。

    我的完整 shell 启动配置现在是这样的:

    export WORKON_HOME=$HOME/.virtualenvs
    export PROJECT_HOME=$HOME/Devel
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
    source /usr/local/bin/virtualenvwrapper.sh
    export VIRTUALENVWRAPPER_ENV_BIN_DIR=usr/local/bin
    

    【讨论】:

      【解决方案4】:

      当我在新的 RPI4 上使用 mkvirtualenv 时,我收到了同样的错误消息。我将这些行添加到我的.bashrc 中,它为我解决了问题:

      export WORKON_HOME=$HOME/.virtualenvs
      export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
      export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
      source /usr/local/bin/virtualenvwrapper.sh
      export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin  # <== This line fixed it for me
      

      这是上面@maxmcmahon 答案的变体,但将 VIRTUALENVWRAPPER_ENV_BIN_DIR 设置为“bin”。我不需要更改 virtualenv 或 virtualenvwrapper 的版本;默认安装的当前版本很好。

      【讨论】:

      • 这行得通,但我不确定我是否理解为什么...谢谢。
      • @Rob,当我得到错误时,我去了 GitHub 并查看了 virtualenvwrapper 源代码(github.com/bernardobarreto/virtualenvwrapper/blob/master/…)。我在源代码中发现了错误,然后搜索了我的激活脚本的放置位置。我找到了激活脚本的实际位置。然后我设置 VIRTUALENVWRAPPER_ENV_BIN=bin 以指向它。它必须是相对引用,因为 virtualenvwrapper.sh 脚本在目录规范中使用了它,并且前导 / 导致连续 2 个 // 导致错误。
      【解决方案5】:

      错误显示是因为创建的虚拟环境没有激活。
      不要惊慌,您只需要通过运行特定命令来激活它。
      对我来说,在做$mkvirtualenv cv -p python3 之后,虚拟环境已经创建,但没有被激活。
      在上面的命令之后你输入source /home/pi/.virtualenvs/cv/bin/activate,它会激活虚拟环境变量。
      它对我有用。
      现在我的命令行看起来像:

      (cv) pi@raspberrypi:~ $
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-23
        • 2019-06-07
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多