【问题标题】:Use default Python while having Anaconda在拥有 Anaconda 时使用默认 Python
【发布时间】:2018-03-14 23:02:31
【问题描述】:

对于 Python 开发,我在 Mac 上使用 Miniconda 和 macos Sierra。但是,我必须使用 与默认 Python 一起使用的框架(位于 /usr/bin/python)。

我的问题是:如何为这个默认的 Python 安装包?如果我使用pip some-package,这将自动安装根 conda 环境的包。

编辑: 正如 cmets 中所讨论的,我同意将 Python 的系统默认版本弄乱是个坏主意。相反,我希望这个 SDK 能够在 conda 环境中工作,或者使用从 python.org 安装的 Python 2.7。但是,这些似乎都不起作用!如何让它发挥作用?

【问题讨论】:

  • “但是,我必须使用仅适用于默认 Python(位于 /usr/bin/python)的框架”,这听起来像是一个可疑的声明。为什么说它适用于默认 Python,存在于 /usr/bin/python 中?
  • 因为至少在我的系统 Python 上,它没有附带 pip,这很好,因为您真的不应该乱用系统 Python。
  • 再一次,这是一个可疑的说法。看看他们的网站,他们甚至有一个 Mac 安装部分“如果你选择使用 python.org 中的 Python2.7:”。无论如何,我强烈建议不要接触您的系统 Python。只需使用 conda 环境。它没有理由只适用于系统 Python
  • 坦率地说,听起来他们根本不想经历写如何在Mac上安装Python的教程的痛苦,只是告诉你出于懒惰而使用系统python .不好的建议。非常糟糕的建议。无论如何,至少在 我的 MacOs Sierra 上,我的系统 Python 是 64 位的,并且该安装指南似乎暗示您需要 32 位的 Python。很多可疑的说法......
  • @darthbith 确实,我不认为我的 MacOs Sierra 系统 Python 版本 2.7.10 甚至带有 pip,当我尝试 /usr/bin/python -m pip 时它找不到它,几乎可以肯定是因为它不是故意与它打包在一起的,据我估计,这是一件好事,因为你真的不想被它弄乱。

标签: python anaconda


【解决方案1】:

试试这个,找到你的路径/到/python/脚本:

/usr/bin/python/scripts

并在此处运行 pip。

【讨论】:

    【解决方案2】:

    pip some-package 正在为根 anaconda 环境安装,因为它使用的是 anaconda 库中的 pip。 Anaconda 在 /usr/bin/ 之前将 anaconda 根目录添加到 path 。因此,当您使用 pip 时,如果在 anaconda root 上找到它。使用which pip检查pip的路径,这会告诉你完整的pip路径。

    您可以使用/usr/bin/python -m pip install some-package 在默认 python 上安装它。或使用/path/to/default/pip install some-package

    【讨论】:

    • 默认的 Python,位于 usr/bin/python 不附带 pip。如果你做/usr/bin/python -m pip,你会得到:/usr/bin/python: No module named pip
    • 那么你的默认 python 没有 pip。从这里获取点子[bootstrap.pypa.io/get-pip.py].下载这个文件,然后运行/usr/bin/python get-pip.py。这将在默认 python 中安装 pip。之后你可以使用/usr/bin/python -m pip
    • 虽然这确实是一个解决方案,但您可能没有阅读主要问题中的 edit。如果 SDK 可以使用 conda 环境而不是与系统的默认 Python 混淆,我更愿意。
    • 为您的 SDK 下载源代码。使用usr/bin/python 构建它。现在把这个包放在你有代码的路径上。
    【解决方案3】:

    常见的问题是 anaconda(或 miniconda)在其 bin 目录中有一个 python 可执行文件和 pip 可执行文件。

    如果你真的需要运行 /usr/bin/python,这会导致令人讨厌的结论:你不能将 conda 放在你的路径中

    这导致我在.bash_profile 中出现了一些烦人的阴谋。您可以使用相同的技术,但您通往 conda 的确切路径可能会有所不同:

    # variables for using Conda
    export BASE_PATH=$PATH
    export CONDA_PATH="/Users/cmerriam/l/miniconda2/bin"
    export CONDA_BIN="$CONDA_PATH/conda"
    export CONDA_ACTIVATE="source $CONDA_PATH/activate"
    export CONDA_DEACTIVATE="source $CONDA_PATH/deactivate"
    
    # prompt function for [conda: myenv] when it is on.
    function conda_branch {
      type $CONDA_BIN >/dev/null 2>&1 && $CONDA_BIN info --envs | grep \* | awk '{print $1;}' | grep -v '^root'
    }
    function conda_part {
      echo "[conda:$(conda_branch)]" | grep -v "\[conda:\]"
    }
    
    
    # Conda alias set
    alias c="echo \"
       cls = list conda environments
       con <name> = activate conda environment
       coff = deactivate conda environment
    
       conda create -n tensorflow python=3.6 anaconda tensorflow jupyter
       conda remove --name tensorflow --all
       echo \\\$CONDA_DEFAULT_ENV\""
    alias cls="$CONDA_BIN info --envs"
    alias con="$CONDA_ACTIVATE"
    alias coff="$CONDA_DEACTIVATE"
    

    选项 2:

    您可能会发现只需要运行与 /usr/bin/python 相同的版本或 PYTHONPATH。然后使用该版本创建一个 conda 环境:

     conda create -n myenv python=2.7 
    

    或者,设置一个 PYTHONPATH

     export PYTHONPATH=/usr/lib/python2.7/site-packages
    

    选项 3:

    卸载 Conda。它是解决一组问题的好工具,这些问题不是您当前的一组问题。

    【讨论】:

      【解决方案4】:

      要使用系统 Python 安装软件包,您可以使用 MacOS 附带的/usr/bin/easy_install

      您可能希望从那里install pip,通过运行:

      sudo easy_install pip
      

      一旦你安装了pip,如果 conda pip 命令遮蔽它,你将无法直接使用它。你有多种选择,这取决于你的口味。您可以选择将系统 pip 别名为alias systempip=/usr/bin/pip,或者在您的$PATH 中将/usr/bin 放在/Users/user/anaconda/ 前面。

      正如其他答案中提到的,不建议使用 Python 系统things may break,并且您(大多数)当然可以让任何包在 conda 环境中工作。

      对于某些人来说,某些软件包无法与 Anaconda 的 Python 一起使用,因为该发行版默认为 Python 的非框架构建。一个常见的抱怨来自 matplotlib 的用户,例如,could not get figure windows to display properly。幸运的是,conda 也提供了一个 python 框架构建,名为pythonwpythonw3。也许你可以尝试让你的包与pythonw一起工作,如果这是你的问题所在。

      【讨论】:

      • 您能否指定在哪里可以找到pythonw?运行 conda install pythonw 似乎不起作用。
      • 我相信如果你运行conda install python,它也会自动安装pythonw。你试过which pythonw 了吗?
      • 当我激活我的 conda 环境时,which pythonw 返回/usr/local/bin/pythonw
      【解决方案5】:

      我也有一台装有 Sierra 的 Mac。

      假设:假设您有 Anaconda。现在你会有 DefaultPython(python2) 并说这个 Anaconda 是 Python3 的。

      秘密: 选择任何 shell/默认 python 的方式是在 shell 中设置 PATH 变量。所以当你安装 Anaconda 时,安装程​​序会尝试为你的默认 bash shell 设置新的路径变量

      解决方案:默认有一条蟒蛇(2 或 3 条)。对于较少使用的,请尝试使用完整路径。如果你必须使用

      作弊码:创建/usr/bin/python 作为python 实际repo 的符号链接(保存旧的)。这可以根据您的使用情况进行更改。

      希望这行得通!

      【讨论】:

        【解决方案6】:

        我不确定我是否正确理解了你的问题,但如果问题是你想在几个版本的 python 之间轻松切换,比如系统 python、其他版本的 python、不同版本的 miniconda 或绑定到特定 python 版本的 anaconda (这不仅仅是虚拟环境),那么最好的解决方案是pyenv

        它会根据上下文自动重新链接您当前的/usr/bin/python/usr/bin/pip 和其他二进制文件(如ipython)当前查看的位置。上下文有几个选项,但我通常使用系统 python 作为默认值,pyenv local 用于每个项目,它基本上将具有版本名称的文件放在当前目录中,并且每次将 cd 放在目录或其子目录中/usr/bin/python 会自动切换到您选择的版本。

        【讨论】:

        • 我的问题是我不想乱用系统python,想在conda环境下使用pynaoqi。
        • @JNevens,再一次,如果你想切换python/usr/bin/python 的位置,pyenv 会有所帮助。
        • 这不是我的问题。我知道如何在 python 和 conda envs 之间切换或如何加载 PATH 变量。只是我无法让包pynaoqi 与 conda 一起运行。
        • @JNevens, pynaoqi 似乎是对 c[++] 库 naoqi 的绑定。您无权访问源代码,即您无法为其他版本的 python 重新编译绑定。您所能做的就是将pynaoqi安装到系统python中,并在系统python和您的conda环境之间建立一些进程间通信。
        • @JNevens,另一种选择是在 docker 容器或 vagrant 环境中设置您的项目。
        【解决方案7】:

        您不是在尝试安装 任何 包,而是在尝试安装非常特定的包 pynaoqi,它需要外部 SDK,它是为特定架构编译的。您应该编辑您的问题以反映这一点。

        根据我在网上看到的,这不是一件小事。首先,确保您拥有适合 MacOS 版本的version 2.5 of the SDK。然后,查看this script。正如他们所说,为了工作,应该重命名动态库。 顺便说一句,您需要 64 位 Python 2.7。

        【讨论】:

        • 我同意,这正是我想说的。此外,正如我在答案下方的评论中所写:更好的选择可能是将环境隔离在容器或虚拟 linux 环境中。
        【解决方案8】:

        您需要管理 PATH 环境变量。我喜欢在我的 shell 配置文件中保留函数来“打开”和“关闭” conda。因此,例如在 Mac 上:

        deactconda() {
          export PATH="${PATH/\/Users\/<your_usrname>\/anaconda\/bin:/}" 
        }
        
        actconda() {
          export PATH=$HOME/anaconda/bin:$PATH
        }
        

        然后,当您想停止使用 conda 时,只需在提示符处键入 deactconda 等即可。

        【讨论】:

          【解决方案9】:

          您可以通过多种方式执行此操作,首先是在默认位置提供 pip 的路径,

          your_default_python_path/pip install package
          

          例如,如果你有一个 python 2.7,那么,

          sudo /usr/local/bin/pip2.7 install networkx

          这应该可以为您解决问题。之后,您可以安装任何软件包并使用默认 python 调用它们(我的这里是 2.7)

          从 pip 0.8 版本开始,您也可以指定 sudo /usr/local/bin/pip-2.x install package

          【讨论】:

            猜你喜欢
            • 2018-01-22
            • 2016-05-05
            • 2017-12-18
            • 2023-01-21
            • 2014-05-11
            • 2022-11-29
            • 2014-08-31
            • 2014-07-18
            • 2015-04-29
            相关资源
            最近更新 更多