我正在按照
virtualenvwrapper
的安装说明进行操作,如here所述。
我已经使用了
pip install virtualenvwrapper
并且它安装在路径/home/.pyenv/shims/
。
但是当我运行命令时
source /home/.pyenv/shims/virtualenvwrapper.sh
整个 Konsole 关闭。
我之前把命令放在.bashrc
文件中,差点毁了Linux,因为Konsole打开后会立即崩溃。
我正在使用 Linux OpenSuse 和 Python 版本 3.6.0。
有什么想法可能导致崩溃吗?
我找到了解决方案。
source ~/.pyenv/versions/VERSION/bin/virtualenvwrapper.sh
每次都有效。
由于某种原因您无法使用 shims 目录。也许是因为 virtualenvwrapper 可能已安装到 pyenv 版本目录中。如果您使用 shims 目录,则在使用 pyenv 切换版本时该链接可能会中断。最好直接访问。
我在 MacOS (10.12.6) 上看到了同样的情况。
对我来说,关闭/结束终端窗口的 .zshrc 条目是:
source $HOME/.pyenv/shims/virtualenvwrapper.sh
我也想知道为什么会发生这种情况,以及如何解决它。
我已经在不同的机器上多次遇到这个问题,虽然我不完全理解为什么会发生这种情况,但我已经找到了问题的解决方案。
问题似乎是由于正在使用的
python
版本与用于安装 pip
的 virtualenvwrapper
版本不匹配所致。我一直在使用 python (2.7) 的系统安装,但 pip 版本适用于 python 3.5。
要解决此问题,请使用此答案中的建议,如下所示:
python -m pip install virtualenvwrapper
然后你就可以
source /path/to/virtualenvwrapper.sh
,一切都会正常工作。
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
添加到肖恩的答案,因为我没有足够的声誉来添加评论,添加
export PYENV_VERSION="$(pyenv version-name)"
source ~/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh
到你的
.bashrc
(或者在我的例子中为.zshrc
)允许你指向正确的virtualenvwrapper.sh
,即使你在没有硬编码或grep的情况下更改了Python版本
我在 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
我也遇到了同样的问题,我通过使用
builtin python(例如 /usr/bin/python3)而不是 pyenv python 运行时安装
virtualenvwrapper
解决了这个问题,尽管内置的 Python 运行时并未在实际工作区中使用。
在您的
~/.bashrc
或 ~/.zshrc
中,输入:
export PYENV_VERSION="$(cat $HOME/.pyenv/version)"
source "$HOME/.pyenv/versions/$PYENV_VERSION/bin/virtualenvwrapper.sh"
对我有用。
我在 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
并重建虚拟环境