virtualenvwrapper.sh 使 shell 崩溃

问题描述 投票:0回答:9

我正在按照

virtualenvwrapper
的安装说明进行操作,如here所述。

我已经使用了

pip install virtualenvwrapper
并且它安装在路径
/home/.pyenv/shims/

但是当我运行命令时

source /home/.pyenv/shims/virtualenvwrapper.sh
整个 Konsole 关闭。 我之前把命令放在
.bashrc
文件中,差点毁了Linux,因为Konsole打开后会立即崩溃。

我正在使用 Linux OpenSuse 和 Python 版本 3.6.0。

有什么想法可能导致崩溃吗?

python python-3.6 virtualenvwrapper
9个回答
13
投票

我找到了解决方案。

source ~/.pyenv/versions/VERSION/bin/virtualenvwrapper.sh
每次都有效。

由于某种原因您无法使用 shims 目录。也许是因为 virtualenvwrapper 可能已安装到 pyenv 版本目录中。如果您使用 shims 目录,则在使用 pyenv 切换版本时该链接可能会中断。最好直接访问。


5
投票

我在 MacOS (10.12.6) 上看到了同样的情况。

对我来说,关闭/结束终端窗口的 .zshrc 条目是:

source $HOME/.pyenv/shims/virtualenvwrapper.sh

我也想知道为什么会发生这种情况,以及如何解决它。


3
投票

我已经在不同的机器上多次遇到这个问题,虽然我不完全理解为什么会发生这种情况,但我已经找到了问题的解决方案。

问题似乎是由于正在使用的

python
版本与用于安装
pip
virtualenvwrapper
版本不匹配所致。我一直在使用 python (2.7) 的系统安装,但 pip 版本适用于 python 3.5。

要解决此问题,请使用此答案中的建议,如下所示:

python -m pip install virtualenvwrapper

然后你就可以

source /path/to/virtualenvwrapper.sh
,一切都会正常工作。


2
投票

Sean Combs' answer 也适合我。但我不想硬编码特定的 python 版本,所以我使用

grep
动态构建到
virtualenvwrapper.sh
的路径。

export VIRTUALENVWRAPPER_PYTHON=$HOME/.pyenv/shims/python
source $HOME/.pyenv/versions/$($VIRTUALENVWRAPPER_PYTHON -V 2>&1 | grep -Po '(?<=Python )(.+)')/bin/virtualenvwrapper.sh

2
投票

添加到肖恩的答案,因为我没有足够的声誉来添加评论,添加

export PYENV_VERSION="$(pyenv version-name)"
source ~/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh

到你的

.bashrc
(或者在我的例子中为
.zshrc
)允许你指向正确的
virtualenvwrapper.sh
,即使你在没有硬编码或grep的情况下更改了Python版本


1
投票

我在 Mac 上遇到了这个问题,我发现 zsh 崩溃了 带线

source ~/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh
如果您未指定
VIRTUALENVWRAPPER_PYTHON
变量

这是我在新用户上的 pyenv 和 virtualenvwrapper 的 .zshrc (或 .bashrc)配置

command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

export PYENV_VERSION="$(pyenv version-name)"
VIRTUALENVWRAPPER_PYTHON="$HOME/.pyenv/shims/python"


export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel

source ~/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh

# Tell pyenv-virtualenvwrapper to use pyenv when creating new Python environments
export PYENV_VIRTUALENVWRAPPER_PREFER_PYVENV="true"

# Set the pyenv shims to initialize
if command -v pyenv 1>/dev/null 2>&1; then
 eval "$(pyenv init -)"
fi

0
投票

我也遇到了同样的问题,我通过使用

builtin python
(例如 /usr/bin/python3)而不是 pyenv python 运行时安装 virtualenvwrapper 解决了这个问题,尽管内置的 Python 运行时并未在实际工作区中使用。


0
投票

在您的

~/.bashrc
~/.zshrc
中,输入:

export PYENV_VERSION="$(cat $HOME/.pyenv/version)"
source "$HOME/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh"

对我有用。


0
投票

我在 ohmyzsh 上遇到了这个问题!在使用brew安装了pyenv的MacOS上。我也使用 Warp,但我认为这并不重要。

如果 ohmyzsh virtualenvwrapper 插件在你的 ~/.zshrc 中,并且这个问题发生在你身上,zsh 甚至不会启动,如果 zsh 是你的 shell,这是个坏消息。最好的选择是在文本编辑器中打开 .zshrc 并注释掉该插件。然后您终于可以打开 zsh shell 并在没有 virtualenvwrapper 的情况下继续工作或解决问题。

我找到的唯一解决方案如下。这有点重,但对我有用。

rm -rf ~/.pyenv
pyenv install 3.12.2 # Pick your version

在包含虚拟环境的每个目录中:

rm -rf .venv # Use the actual virtual environment directory

并重建虚拟环境

© www.soinside.com 2019 - 2024. All rights reserved.