无法通过ShellScript激活virtualenv

时间:2018-07-04 01:23:13

标签: bash shell virtualenv fish pyenv

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

lines = [
    ['101','a','f1','abc'],
    ['101','a','f2','def'],
    ['102','a','f2','xyz'],
    ['102','a','f3','fgh'],
    ['103','b','f1','rst']
]

但是我无法通过以下错误激活我的环境:

set -e
pyenv activate myenv

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

我使用Failed to activate virtualenv. Perhaps pyenv-virtualenv has not been loaded into your shell properly. Please restart current shell and try again. ,但是它是在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 X 10.13.5
  • OS:v2.7.1
  • fish:v1.2.5
  • pyenv:v1.1.3

1 个答案:

答案 0 :(得分:0)

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

  1. 在您的Bash环境(除了Fish环境中)初始化PyEnv
  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初始化代码段(刚刚添加到~/.bash_profile中)添加到Bash脚本的顶部。