关于python:使用Pip将软件包安装到Anaconda Environment

Using Pip to install packages to Anaconda Environment

conda 4.2.13
MacOSX 10.12.1

我正在尝试将包从pip安装到使用anaconda创建的新环境(虚拟)。在Anaconda文档中,它说完全没问题。它的执行方式与virtualenv相同。

Activate the environment where you want to put the program, then pip install a program...

我在Ananconda中创建了一个空的环境,如下所示:

1
conda create -n shrink_venv

激活它:

1
source activate shrink_venv

然后我可以在终端中看到我在我的env (shrink_venv)中工作。当我尝试使用pip安装软件包时,问题就出现了:

1
2
3
(shrink_venv): pip install Pillow

Requirement already satisfied (use --upgrade to upgrade): Pillow in /Library/Python/2.7/site-packages

所以我可以看到它认为从系统范围的包中满足要求。所以看起来环境工作不正常,绝对不像文档中说的那样。我在这里做错了吗?

只是一个注意事项,我知道你可以使用conda install作为软件包,但是我从anaconda那里遇到了Pillow的问题,所以我想从pip获得它,因为文档说这很好。

输出which -a pip

1
2
/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip

**更新**
我觉得这是很常见的问题。我发现conda env与PYTHONPATH的效果不佳。即使您使用conda环境,系统似乎总是在PYTHONPATH位置查看。现在,我总是在使用conda环境时运行unset PYTHONPATH,并且它运行得更好。我在Mac上。


对于遇到这种情况的其他人,我发现这是最直接的解决方案:

  • 运行conda create -n venv_namesource activate venv_name,其中venv_name是虚拟环境的名称。

  • 运行conda install pip。这将把pip安装到你的venv目录。

  • 找到您的anaconda目录,找到实际的venv文件夹。它应该像/anaconda/envs/venv_name/

  • 执行/anaconda/envs/venv_name/bin/pip install package_name安装新软件包。

  • 现在应该使用该虚拟环境的pip成功安装软件包!


    您所要做的就是打开Anaconda Prompt并输入

    1
    pip install package-name

    它将自动安装到anaconda环境而无需使用

    1
    conda install package-name

    由于某些conda软件包可能缺乏支持超时,因此需要使用pip进行安装,这是一种方法

    如果你在anaconda中安装了pip,你可以在jupyter笔记本或链接到anaconda的python shell中运行以下命令

    1
    pip.main(['install', 'package-name'])

    使用pip.__version__检查您的pip版本。如果是10.x.x或更高版本,则使用此行代码安装python包

    1
    subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])

    在你的jupyter笔记本中,你可以通过pip在这个单元格中安装python包;

    1
    !pip install package-name

    或者您可以使用与anaconda相关联的python版本

    1
    !python3.6 -m pip install package-name


    如果在创建conda环境时没有添加pip

    1
    conda create -n env_name pip

    并且没有在环境中安装pip

    1
    2
    source activate env_name
    conda install pip

    那么你得到的唯一点是系统点,它将全局安装包。

    你可以在这个问题中看到总线,即使你做了上面提到的任何一个过程,在conda环境中pip的行为仍然是未定义的。

    为了确保使用安装在conda环境中的pip而不必输入冗长的/home/username/anaconda/envs/env_name/bin/pip,我编写了一个shell函数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # Using pip to install packages inside conda environments.
    cpip() {
        ERROR_MSG="Not in a conda environment."
        ERROR_MSG="$ERROR_MSG
    Use \`source activate ENV\`"

        ERROR_MSG="$ERROR_MSG to enter a conda environment."

        [ -z"$CONDA_DEFAULT_ENV" ] && echo"$ERROR_MSG" && return 1

        ERROR_MSG='Pip not installed in current conda environment.'
        ERROR_MSG="$ERROR_MSG
    Use \`conda install pip\`"

        ERROR_MSG="$ERROR_MSG to install pip in current conda environment."

        [ -e"$CONDA_PREFIX/bin/pip" ] || (echo"$ERROR_MSG" && return 2)

        PIP="$CONDA_PREFIX/bin/pip"
       "$PIP""$@"
    }

    希望这对你有所帮助。


    对于那些希望使用pip在conda中安装少量软件包然后使用的人,

    1
    sudo $(which pip) install <instert_package_name>

    为我工作。

    Explainaton

    无论如何,对我来说,似乎which pip非常可靠地找到你所在的conda env pip路径。但是,当使用sudo时,这似乎重定向路径或以其他方式破坏它。

    使用$(which pip)独立于sudo或任何命令执行此操作,类似于在Linux中运行/home//(mini)conda(3)/envs//pip。这是因为$()单独运行,文本输出添加到外部命令。


    如果您使用的是Windows操作系统,请打开Anaconda Prompt并输入activate yourenvname

    如果你正在使用mac或Linux OS打开终端并输入source activate yourenvname

    yourenvname这是您想要安装pip包的理想环境

    键入上面的命令后,您必须在控制台输出中看到您的环境名称从base更改为您键入的环境yourenvname(这意味着您现在处于所需的环境上下文中)

    然后你需要做的就是普通的pip install命令,例如pip install yourpackage

    通过这样做,pip包将安装在您的Conda环境中


    我在anaconda上安装一个非conda软件包时遇到了问题,我在这里听到了最喜欢的答案,但它并不顺利(也许是因为我的anaconda在F目录中并且创建的env是在C中并且没有创建bin文件夹,我不知道,但它不起作用)。

    根据anaconda pip已经安装了(在anaconda提示符下使用命令"conda list"找到),但pip包没有安装,所以这就是我做的,我再次安装了pip然后pip安装了包。

    1
    2
    conda install pip
    pip install see

    see是非conda包。


    我通过以下方式解决了这个问题:

    如果你有一个非conda点作为你的默认点,但conda python是你的默认python(如下所示)

    1
    2
    3
    4
    5
    6
    7
    8
    >which -a pip
    /home/<user>/.local/bin/pip  
    /home/<user>/.conda/envs/newenv/bin/pip
    /usr/bin/pip

    >which -a python
    /home/<user>/.conda/envs/newenv/bin/python
    /usr/bin/python

    然后而不是只是打电话
    pip install ,您可以将模块标志-m与python一起使用,以便它使用anaconda python进行安装

    1
    python -m pip install <package>

    这会将软件包安装到anaconda库目录而不是与(非anaconda)pip相关联的库目录


    以上所有答案主要基于virtualenv的使用。我刚刚安装了anaconda3并且没有安装任何virtualenv。所以,我找到了一个更好的替代方案,而不用担心创建virtualenv。

    如果您在linux中安装了许多pip和python版本,那么首先运行以下命令列出所有已安装的pip路径。

    whereis pip

    你会得到这样的东西作为输出。

    pip: /usr/bin/pip /home/prabhakar/anaconda3/bin/pip /usr/share/man/man1/pip.1.gz

    复制要用于安装软件包的pip路径,并在sudo替换/home/prabhakar/anaconda3/bin/pip以下命令后粘贴它。

    sudo /home/prabhakar/anaconda3/bin/pip install

    这对我很有用。如果您在安装时遇到任何问题,请发表评论。


    只需activate shrink_venv也可以。我尝试创建新环境,我的conda安装不允许我在开始时使用source。


    如果你只想安装conda。只需从PATH变量中删除所有其他python路径。

    仅离开:

    1
    2
    3
    C:\ProgramData\Anaconda3
    C:\ProgramData\Anaconda3\Scripts
    C:\ProgramData\Anaconda3\Library\bin

    这允许您只使用pip install *,它将直接安装到您的conda安装中。