【问题标题】:Failed to activate virtualenv via shellscript无法通过 shellscript 激活 virtualenv
【发布时间】:2018-07-04 01:23:13
【问题描述】:

我正在尝试通过像这样非常简单的 bash 脚本来激活我的 pyenv-virtualenv 环境。

set -e
pyenv activate myenv

但我无法激活我的环境并出现以下错误:

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

我可以在命令行中激活它,所以我认为这是由于我的shell环境。

我使用fish shell,但它是在$PATH 设置读入bash shell 后启动的。 我给你看我的设置。

.bash_profile:

export LANG="ja_JP.UTF-8"

export XDG_CONFIG_HOME="$HOME/.config"

export PATH="/sbin"
export PATH="/usr/sbin:$PATH"
export PATH="/bin:$PATH"
export PATH="/usr/bin:$PATH"
export PATH="/usr/local/bin:$PATH"

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

exec fish

还有我的config.fish

status --is-interactive; and source (pyenv init -|psub)
status --is-interactive; and source (pyenv virtualenv-init -|psub)

怎么了?

我正在使用:

  • OS:OS X 10.13.5
  • fish: v2.7.1
  • pyenv: v1.2.5
  • pyenv-virtualenv: v1.1.3

【问题讨论】:

  • 脚本是否可以在 Bash 下工作?
  • 不,它在 Bash 下也不起作用。

标签: bash shell virtualenv fish pyenv


【解决方案1】:

我认为原因是您在 Fish shell 环境中初始化 PyEnv,然后在 Bash shell 环境中调用 PyEnv(通过您的 Bash 脚本)。要解决此问题,您可以尝试以下任一可能的解决方案:

  1. 在您的 Bash 环境中初始化 PyEnv(除了您的 Fish 环境)
  2. 用 Fish 而不是 Bash 编写脚本

由于 PyEnv 似乎比 Fish 对 Bash 的支持更好,让我们关注选项 #1。 PyEnv 安装指南的第 3 步建议使用以下命令将 PyEnv 初始化添加到您的 ~/.bash_profile

$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

运行该命令后,我怀疑您的脚本会按预期运行。如果没有,您可以尝试将相同的 PyEnv 初始化 sn-p(您刚刚添加到 ~/.bash_profile)添加到 Bash 脚本的顶部。

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 1970-01-01
    • 2010-12-14
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    相关资源
    最近更新 更多