【问题标题】:How to switch back and forth between (general) pyenv python and system python in Ubuntu?如何在Ubuntu中(通用)pyenv python和系统python之间来回切换?
【发布时间】:2017-02-17 04:54:09
【问题描述】:

我曾经在我的 Ubuntu 中使用安装在 anaconda3 下的 python。但出于某种原因,我还需要创建一个pyenv 并将其推广给所有用户。要运行 python 脚本,我了解到与anaconda3 不同,我必须使用所有需要的 python 包构建pyenv,因为我收到错误说模块未定义。为此,在安装pyenv 之后,我在(general) pyenv shell 中使用pip install <package_name> 安装了所需的模块。现在我可以运行脚本了。有没有办法在anaconda3系统python和pyenvpython之间来回切换?

(仅从提示 (general) username@username-Rev-1-0:~$, 我知道我现在在pyenv。)

这是.bashrc文件的相关部分:

# added by Anaconda3 4.3.0 installer
export PATH="/home/username/anaconda3/bin:$PATH"

# Load pyenv automatically by adding
# the following to ~/.bash_profile:

export PATH="/home/username/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

【问题讨论】:

  • 我创建别名并将它们添加到 bashrc 以在我系统上的不同 Python 安装之间切换。对于多个虚拟环境,有虚拟环境管理器。
  • 刚刚添加了那个文件的内容。你能给我举个例子吗?
  • 我将其添加为答案(以允许格式化)。检查这是否适合您。

标签: python-3.x anaconda pyenv


【解决方案1】:

尝试将其添加到您的 .bashrc。

export ANACONDA_HOME="/home/username/anaconda3"
alias my_anaconda="unset PYENV_HOME && export PATH=$ANACONDA_HOME/bin:$PATH"

# Load pyenv automatically by adding
# the following to ~/.bash_profile:
export PYENV_HOME="/home/username/.pyenv/"
alias my_pyenv='unset ANACONDA_HOME && export PATH=$PYENV_HOME/bin:$PATH && eval "$(pyenv init -)" && eval "$(pyenv virtualenv-init -)"'

在 shell 上,尝试:

$ my_anaconda

$ my_pyenv

【讨论】:

  • 第一个有效,我可以回到 anaconda 系统 python 但第二个给我这个错误消息:没有找到命令 'pyenv',你的意思是:命令 'pyvenv' from package 'python3 -venv'(universe)来自包'libnss3-tools'(universe)的命令'p7env' pyenv:找不到命令没有找到命令'pyenv',你的意思是:来自包'libnss3-tools'(universe)的命令'p7env'来自包'python3-venv'(universe)pyenv的命令'pyvenv':找不到命令
  • 对不起,你的意思是在我已经拥有的之上添加它。对?在这种情况下,输入这些命令后我什么也得不到(虽然没有错误消息)。
  • 这很有趣。 &&是什么意思?
  • && 表示“惰性逻辑与”。 command1 && command2 && command3 意味着执行 command1 然后 command2(如果 command1 成功)然后 command3(如果 command3 成功)。您可以在以下位置找到更多信息:stackoverflow.com/questions/6152659/…
  • 不适合我。 (Ubuntu 18.04 和 bash)
【解决方案2】:

受答案启发,谢谢。我在 MacOs 上使用过类似的方法:

# in my ~/.bash_profile
# Anaconda app is installed and initiated at the terminal start
# path to Anaconda: /Users/<USER>/opt/anaconda3/


switch_pyenv(){
    conda deactivate
    conda deactivate # in case you're not in base env
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
}

switch_conda(){
    conda activate base
    export PATH="/Users/<USER>/opt/anaconda3/bin:$PATH"
}


# quick check which python, pip
w(){
  which python
  which pip
  py -V
}

当我切换到一个环境时,我会使用简写 w 检查“我在哪里”。

【讨论】:

  • 这在 bash 中有效,但在我进入 tmux 会话时无效。尝试来回切换时出现错误_pyenv_virtualenv_hook: command not found
  • 嗨,您尝试重新加载 Bash 了吗? ```` $ exec Bash ```` 或 ``` 源代码。 ~/.bashrc ```
  • 刚刚试了一下,问题依旧
  • 抱歉,我想不出解决办法。
猜你喜欢
  • 1970-01-01
  • 2020-07-14
  • 2015-12-13
  • 2016-01-24
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多