【问题标题】:How to create conda environment with specific python version?如何创建具有特定 python 版本的 conda 环境?
【发布时间】:2019-06-22 08:07:06
【问题描述】:

我已经安装了miniconda3,因为我想要一个带有python 3.3.0版本的环境,所以我通过

创建它
conda create -n "myenv" python=3.3.0

但是当我通过

激活环境时
conda activate myenv

python有2.7.15版本和路径

/usr/bin/python

并且ipython有python版本3.6.8和路径

/home/myname/.local/bin/ipython

我可以使用python3 访问正确的python,它位于

/home/myname/miniconda3/envs/mattention/bin/python3

但是,ipython3 再次拥有 python 版本 3.6.8。

conda install python=3.3.0

保持现状不变。

一个解决方案是通过打开 IPython

python3 -m IPython

然而,虽然这对python 工作正常,但我收到了错误消息

/home/myname/miniconda3/envs/mattention/bin/python3: No module named IPython

是否可以在该特定环境中使用命令pythonipython 访问python 3.3.0 版,即不是通过在.bashrc 中设置别名来访问?

编辑:

事实证明,如果您选择版本 3.3 而不是 3.3.0 以及@ilmarinen 的答案,则不会出现此问题

conda create -n "myenv" python=3.3 ipython

一切正常,pythonipython 结果为 python 3.3.5 版本。

【问题讨论】:

    标签: python conda miniconda


    【解决方案1】:

    您还需要将 ipython 安装到您的给定环境中

    conda create -n "myenv" python=3.3.0 ipython
    

    conda 环境预先添加到您的 PATH 变量中,因此当您尝试运行可执行文件“ipython”时,Linux 不会在您激活的环境中找到“ipython”(因为它不存在那里),但它会继续寻找它,并最终在安装它的任何地方找到它。

    【讨论】:

    • 很好,试过了,它工作了 - 现在,ipython 调用所需的版本。现在只剩下我的问题的一部分,如果有办法用python而不是python3调用所需的版本。
    • 它应该已经工作了,但是您的环境中可能发生了一些事情。您可以尝试运行命令行“which python”来查看 linux 是如何确定 python 的位置的。如果您为 python 设置了别名,那也可能会搞砸(也就是说,您也使用了 ocmmand 行“别名”)
    • 这是我运行的命令以获取我在问题中报告的路径。
    • 有必要这样做吗?至少 感觉 conda 应该处理这个问题
    • conda 相当多地依赖 linux 来查找可执行文件,离开它会破坏很多事情。现在,如果我要像在我的相当干净的 linux 机器上那样创建一个环境,我将能够通过运行命令“ipython”来运行带有 python 3.3 的 ipython 控制台。您似乎在环境路径之前查找 /home/myname/.local/bin 中的路径。我不知道这是为什么,但只要该路径优先于您激活的环境,您就会选择错误的 ipython 可执行文件。
    【解决方案2】:

    要使用 python 3.3.0 创建名为 py33 的环境,使用通道 conda-forge 和软件包列表:

    conda create -y --name py33 python==3.3.0
    conda install -f -y -q --name py33 -c conda-forge --file requirements.txt
    conda activate py33
    ...
    conda deactivate
    

    或者,您可以创建一个environment.yml 文件而不是 requirements.txt:

    name: py33
    channels:
      - conda-forge
    dependencies:
      - python=3.3.0
      - ipython
    

    使用此命令删除环境:

    conda env remove -n py33
    

    【讨论】:

      【解决方案3】:

      我有类似的问题。而且我找不到很多有用的讨论。

      对我来说,问题是当我执行 conda init zsh 时,我的 shell 配置文件中硬编码了指向 python 的 miniconda python 的别名。 init 进程以某种方式复制别名并始终重新加载它,从而覆盖“正确”版本。

      conda create -n py27 python=2.7之后(我的系统默认是3.6),版本正确安装在miniconda3/envs/py27/bin/python。但是激活的环境python没有指向它,如which python所示,即使我删除了更新的shell配置。

      最后通过'reverse' conda init解决(去掉.zshrc中生成的conda函数),去掉别名,重新初始化。

      我猜其他 shell 也在使用相同的机制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-21
        • 2020-10-21
        • 2022-08-24
        • 2017-09-05
        相关资源
        最近更新 更多