【问题标题】:Allow use of system python in conda env?允许在 conda env 中使用系统 python?
【发布时间】:2015-04-26 00:30:03
【问题描述】:

有没有办法强制 conda 在给定的环境中使用系统版本的 python(以及所有系统库)?

我在我的 shell 中默认启用了 conda,这可能会有点烦人,因为如果我尝试运行系统 python 应用程序,它会得到与预期不同的 python 版本(python 仍然默认为 2.7 on *buntu),并且通常不会运行。我希望 conda 的根环境只是重定向到系统 python 安装。

【问题讨论】:

  • 你能举一个应用程序/经验的例子吗,我没见过这个。
  • @AndyHayden:我在我的 conda root 环境中使用 python 3.4,所以基本上任何在主脚本开头有 !#/bin/env python 的 ubuntu 包如果从命令行运行(因为它期待python 2,这仍然是默认值)。我的.profile.zshrc 都有# added by Miniconda3 3.9.1 installer ; export PATH="/home/naught101/miniconda3/bin:$PATH" 行,所以默认情况下所有shell 都启用conda。
  • 您认为这是这些应用程序中的错误吗?有哪些应用?您可以使用 conda(而不是 apt-get)安装该应用程序吗?
  • @AndyHayden:通过 apt 安装的每个基于 python 的包都没有指定 python 版本。试试grep -Hn 'env python' /usr/bin/*。例如fslint-gui。是的,这些包指定python版本可能会更好,但我怀疑有很多包不在ubuntu repos中,因为python2是默认的并且可以预期。我觉得应该可以完全禁用 conda,只使用系统 python 安装。我想我可能只是/home/naught101/miniconda3/bin/python,但我不确定这是否会产生其他后果。

标签: python conda package-management


【解决方案1】:

您需要编辑所有用户 shell 运行命令,例如您的 .bashrc 文件,将 anaconda 的 bin 目录添加到路径 export PATH=~/anaconda/bin:$PATH,而在您的根运行命令中添加 export PATH=$PATH:~/anaconda/bin。在这两种情况下,您都可以访问conda 命令。您可以通过键入$env python --version 来检查将运行哪个 python。您还可以使用$type -a python 检查哪些其他版本可用以及它们的优先顺序(如果另一个被删除)。当然,请确保您的可执行 python 文件具有#!/usr/bin/env python,而不是其他指向 python 可执行文件的直接路径。如需更多信息,请在 Google BASH Shell 中查找查询,例如 http://www.cyberciti.biz/tips/an-example-how-shell-understand-which-program-to-run-part-ii.html

【讨论】:

  • @naught101,我相信上面解释的内容会起作用:如果您编辑在 root 用户下执行的运行命令,以便导出的 PATH 读取 export PATH="$PATH:/home/naught101/miniconda3/bin"(它们将驻留在两个 root和用户的家通过$cd ~ ),在root下执行的任何文件/脚本/等都会按照说明在您的conda版本之前查找默认python,您应该能够使用上述方法进行验证。
  • 是的,它确实使系统python在shell启动时默认,这很好,但是如果你source activate blah然后source deactivate,那么conda root env python再次成为默认值,直到你重新启动外壳。
  • @naught101 你可以试试这个:export PATH=$(conda ..deactivate)
【解决方案2】:

只需从~/miniconda3/bin/ 中删除python 符号链接似乎就可以完成这项工作。

$ which python           
/home/naught101/miniconda3/bin/python
$ rm /home/naught101/miniconda3/bin/python
$ which python                            
/usr/bin/python
$ source activate science                 
discarding /home/naught101/miniconda3/bin from PATH
prepending /home/naught101/miniconda3/envs/science/bin to PATH
(science)$ which python           
/home/naught101/miniconda3/envs/science/bin/python
(science)$ source deactivate                       
discarding /home/naught101/miniconda3/envs/science/bin from PATH
$ which python     
/usr/bin/python

到目前为止,这似乎没有给我带来任何问题。不幸的是,这对~/miniconda/bin/python3 不起作用,因为 conda 在切换到使用相同 python 版本的其他环境时需要它。然而,这个问题并没有从一开始就造成那么多问题。

如果这确实引起了问题,它很容易撤消,只需cd ~/miniconda/bin/; ln -s python3 python(或您在 conda 根环境中使用的任何版本的 python)。您可能需要激活/停用一个 env 才能让该版本的 python 回到您的 PATH 中。

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2021-01-22
    • 1970-01-01
    • 2016-07-28
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多