使用Pip将软件包安装到Anaconda Environment

时间:2016-12-09 12:20:55

标签: python pip anaconda environment

conda 4.2.13 MacOSX 10.12.1

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

  

激活您要放置程序的环境,然后pip安装程序......

我在Ananconda中创建了一个空的环境:

conda create -n shrink_venv

激活它:

source activate shrink_venv

然后我可以在终端中看到我在我的env (shrink_venv)中工作。当我尝试使用pip

安装软件包时,问题就出现了
(shrink_venv): pip install Pillow

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

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

请注意,我知道您可以使用conda install作为套餐,但我的anaconda枕头问题,所以我希望从pip获取,因为文档说没关系。

which -a pip的输出:

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

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

17 个答案:

答案 0 :(得分:81)

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

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

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

  3. 找到您的anaconda目录,找到实际的venv文件夹。它应该在/anaconda/envs/venv_name/之类的地方。

  4. 通过/anaconda/envs/venv_name/bin/pip install package_name安装新软件包。

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

答案 1 :(得分:46)

您只需打开Anaconda Prompt并输入

即可
pip install package-name

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

conda install package-name

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

如果您在anaconda中安装了pip,则可以在jupyter笔记本或链接到anaconda的python shell中运行以下内容

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

使用pip.__version__检查您的点子版本。如果它是版本10.x.x或更高版本,那么使用这行代码安装你的python包

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

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

!pip install package-name

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

!python3.6 -m pip install package-name

答案 2 :(得分:6)

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

conda create -n env_name pip

并且还没有在环境中安装pip

source activate env_name
conda install pip

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

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

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

# Using pip to install packages inside conda environments.
cpip() {
    ERROR_MSG="Not in a conda environment."
    ERROR_MSG="$ERROR_MSG\nUse \`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\nUse \`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" "$@"
}

希望这对你有所帮助。

答案 3 :(得分:4)

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

的人
sudo $(which pip) install <instert_package_name>

为我工作。

<强> Explainaton

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

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

答案 4 :(得分:4)

python -m pip install Pillow

将使用

激活的当前Python的点

source activate shrink_venv

答案 5 :(得分:3)

取决于您如何配置PATH环境变量。 当您的shell将呼叫解析为pip时,它将是找到的第一个bin?

(test)$ whereis pip
pip: /home/borja/anaconda3/envs/test/bin/pip /home/borja/anaconda3/bin/pip

确保anaconda安装中的bin文件夹位于/ usr / lib之前(取决于安装pip的方式)。举个例子:

(test) borja@xxxx:~$ pip install djangorestframework
....
Successfully installed asgiref-3.2.3 django-3.0.3 djangorestframework-3.11.0 pytz-2019.3 sqlparse-0.3.1

(test) borja@xxxx:~$ conda list | grep django
django                    3.0.3                    pypi_0    pypi
djangorestframework       3.11.0                   pypi_0    pypi

我们可以看到djangorestframework已安装在我的测试环境中,但是如果我检查一下基础:

(base) borja@xxxx:~$ conda list | grep django

它是空的。

我个人喜欢使用.pam_environment处理我的所有PATH配置,下面是一个示例:

(base) borja@xxxx:~$ cat .pam_environment
PATH DEFAULT=/home/@{PAM_USER}/anaconda3/bin:${PATH}

一个额外的彗星。安装pip的方式可能会产生问题:

  • 您应该使用:conda install pip->将随pip一起安装的新软件包添加到conda列表中。

  • 您可以不要使用:sudo apt install python3-pip->新软件包将不会添加到conda列表中(因此不受conda管理),但是您仍然可以使用它们(发生冲突的可能性)。

答案 6 :(得分:2)

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

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

conda install pip
pip install see

see是一个非conda包。

答案 7 :(得分:2)

我尝试了上述所有方法。没有人为我工作。以下对我有用:

  1. 激活您的环境
  2. 从以下位置手动下载.whl软件包 https://pypi.org/simple/ /
  3. 在激活了环境的情况下,从命令行导航到您从命令行下载.whl的文件夹中
  4. 执行: pip install package_name_whatever.whl

答案 8 :(得分:1)

以上所有答案主要基于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安装<package-name>

这对我来说非常好。如果您在安装时遇到任何问题,请发表评论。

答案 9 :(得分:1)

如果您使用的是Windows操作系统,请打开 Anaconda提示,然后输入activate yourenvname

如果您使用的是Mac或Linux操作系统,请打开 Terminal (终端)并输入source activate yourenvname

yourenvname是您想要在其中安装pip软件包的环境

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

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

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

答案 10 :(得分:0)

我在这里看到了很多很好的答案,但仍然想分享我的那些对我有用的答案,尤其是当您从 pip-era 切换到 conda-era 时。按照此操作,您可以同时使用 condapip 安装任何软件包。

背景

  • PIP - 仅限 Python 包管理器
  • Conda - 包括 Python 在内的多种语言的包和环境管理器

每次创建新的 conda 环境时默认安装 Pip

# this installs pip for your newly created environment
conda create -n my_new_env pip 

# activate your new conda environment
conda activate my_new_env

# now you can install any packages using both conda and pip
conda install package_name

#or
pip install package_name

这使您可以灵活地在 conda 环境中安装任何软件包,即使它们在 conda 中不可用(例如 wordcloud)

conda activate my_new_env

# will not work as wordcloud is not available in conda
conda install wordcloud

# works fine
pip install wordcloud

答案 11 :(得分:0)

卸载重复的python安装。只需保留 anaconda 并使用此处指定的所需 Python 版本创建一个 env:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html。然后你的 python 和 pip 版本会随着你在 envs 之间切换而改变。

答案 12 :(得分:0)

我知道最初的问题是关于MacOS下的conda。但我想分享一下我在Ubuntu 20.04上的经验。

就我而言,该问题是由于在~/.bashrcalias pip='/usr/bin/pip3'中定义的别名引起的。该别名优先于其他所有内容。

因此,出于测试目的,我删除了运行unalias pip命令的别名。然后,活动conda环境中相应的pip已正确执行。

同一问题适用于python命令。

答案 13 :(得分:0)

这对我有用(请参阅链接的图像)

  1. 打开Anaconda
  2. 在主页下方的左侧窗格中选择环境
  3. 在所选位置的右侧和“搜索环境”栏下方,您应该看到base(root)。点击它
  4. 应该出现一个指向右的三角形,单击它,选择一个“打开端子”
  5. 在此处使用常规pip install命令。无需指向环境/路径

供将来参考,如果碰巧已经满足要求,则可以找到软件包下载到的文件夹。如果您在终端中向上滚动,则可以看到它。它应显示为:要求已经满足,然后是路径

[pip install anaconda]

答案 14 :(得分:0)

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

如果您将非conda点作为默认点,但是conda python是您的默认python(如下所示)

>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 <package>,您可以将模块标志-m与python一起使用,以便它使用anaconda python进行安装

python -m pip install <package>

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

答案 15 :(得分:0)

activate shrink_venv也可以。我尝试创建新的环境,但是我的conda安装不允许我一开始就使用source。

答案 16 :(得分:0)

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

仅离开:

C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin

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