使用 Pip 安装包到 Anaconda 环境
Using Pip to install packages to Anaconda Environment
conda 4.2.13
MacOSX 10.12.1
我正在尝试将 pip
中的软件包安装到使用 anaconda 创建的新环境(虚拟)中。 In the Anaconda docs 它说这完全没问题。它的完成方式与 virtualenv 相同。
Activate the environment where you want to put the program, then pip install a program...
我在 Ananconda 中创建了一个空环境,如下所示:
conda create -n shrink_venv
激活它:
source activate shrink_venv
然后我可以在终端中看到我正在我的环境中工作 (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 的 Pillow 有疑问,所以我想从 pip
获取它,并且自从文档说没问题。
which -a pip
的输出:
/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip
** 更新 **
我看到这是很常见的问题。我发现 conda env 不能很好地与 PYTHONPATH 配合使用。系统似乎总是在 PYTHONPATH 位置查找,即使您使用的是 conda 环境。现在,我在使用 conda 环境时总是 运行 unset PYTHONPATH
,而且效果更好。我在 mac.
对于 运行 遇到这种情况的其他人,我发现这是最直接的解决方案:
运行 conda create -n venv_name
和 conda 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 并输入
pip install package-name
会自动安装到anaconda环境中,无需使用
conda install package-name
由于某些 conda 软件包可能缺乏超时支持,因此需要使用 pip 安装,这是一种方法
如果你在 anaconda 中安装了 pip,你可以 运行 在 jupyter notebook 或链接到 anaconda
的 python shell 中执行以下操作
pip.main(['install', 'package-name'])
使用 pip.__version__
检查您的 pip 版本。如果是 10.x.x
或更高版本,请使用这行代码
安装 python 软件包
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])
在你的 jupyter notebook 中,你可以这样通过 pip 在单元格中安装 python 包;
!pip install package-name
或者您可以使用与 anaconda
关联的 python 版本
!python3.6 -m pip install package-name
如果创建conda环境时没有添加pip
conda create -n env_name pip
也没有在环境中安装 pip
source activate env_name
conda install pip
那么你得到的唯一 pip 就是系统 pip,它将全局安装包。
正如您在此 issue 中看到的那样,即使您执行了上述任一过程,pip 在 conda 环境中的行为仍然有点不确定。
为了确保使用安装在 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" "$@"
}
希望对您有所帮助。
我在 anaconda 上安装非 conda 包时遇到了问题,我按照这里最喜欢的答案进行操作但并不顺利(可能是因为我的 anaconda 在 F 目录中,而创建的 env 在 C 和 bin 中文件夹未创建,我不知道但它没有用)。
根据 anaconda pip 已经安装(可以在 anaconda 提示符下使用命令“conda list
”找到),但是 pip 包没有安装所以这就是我所做的,我再次安装了 pip 并且然后 pip 安装包。
conda install pip
pip install see
see
是非 conda 包。
对于那些希望使用 pip 在 conda 中安装少量软件包然后使用的人,
sudo $(which pip) install <instert_package_name>
对我有用。
解释
无论如何,对我来说,which pip
似乎非常可靠,可以找到您所在位置的 conda env pip 路径。但是,当使用 sudo
时,这似乎会重定向路径或以其他方式破坏它。
使用 $(which pip)
独立于 sudo
或任何命令执行此操作,类似于 运行ning /home/<username>/(mini)conda(3)/envs/<env_name>/pip
in Linux。这是因为 $()
是单独 运行 并且文本输出添加到外部命令。
如果您仅想要安装 conda。只需从您的 PATH 变量中删除所有其他 python 路径。
仅剩:
C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin
这允许您只使用 pip install *
,它将直接安装到您的 conda 安装中。
以上回答主要基于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 <package-name>
这对我来说效果很好。如果您安装有任何问题,请评论。
如果您正在使用 windows OS 打开 Anaconda Prompt 并输入 activate yourenvname
如果您使用的是 mac 或 Linux OS,请打开 Terminal 并输入 source activate yourenvname
yourenvname
这里是你想要安装pip包的环境
输入以上命令后,您必须在控制台输出中看到您的环境名称从 base
更改为您输入的环境 yourenvname
(这意味着您现在处于所需的环境上下文中)
那么您需要做的就是正常的 pip install
命令,例如 pip install yourpackage
这样做,pip 包将安装在您的 Conda 环境中
我通过以下方式解决了这个问题:
如果您将 non-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 库目录,而不是与 (non-anaconda) pip
关联的库目录
编辑:
这样做的原因如下:
命令 pip
引用了一个特定的 pip file/shortcut(which -a pip
告诉你是哪个)。同样,命令 python
引用特定的 python 文件(which -a python
告诉您是哪个文件)。由于某种原因,这两个命令可能会变得不同步,因此您的 'default' pip 与默认 python 位于不同的文件夹中,因此与不同版本的 python 相关联。
相比之下,python -m pip
构造不使用pip
命令指向的快捷方式。相反,它要求 python 找到 其 版本的 pip 并使用该版本安装软件包。
这对我有用(参考图片链接)
- 打开 Anaconda
- Select 主页下方左侧窗格中的环境
- 就在您 select 编辑的位置右侧和 "search environments" 栏下方,您应该会看到 base(root)。点击它
- 应该会出现一个指向右边的三角形,点击它会出现 select "open terminal"
- 在这里使用常规的 pip install 命令。无需指向环境/路径
为了将来参考,如果您碰巧已经满足要求,您可以找到您的包下载到的文件夹。如果您在终端中向上滚动,就可以看到它。它应该是这样的:要求已经满足,然后是路径
[]
python -m pip install Pillow
将使用当前 Python 激活的点
source activate shrink_venv
取决于您如何配置 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}
One extra commet. The way how you install pip might create issues:
您应该使用:conda install pip --> 使用 pip 安装的新包将添加到 conda 列表中。
You shodul NOT use: sudo apt install python3-pip --> 新包将不会添加到 conda 列表中(所以是不受 conda 管理),但您仍然可以使用它们(有可能发生冲突)。
嗯,上面的方法我都试过了。 None 对我有用,因为公司环境中的代理设置存在问题。幸运的是我可以从浏览器打开 pypi 网站。最后,以下对我有用:
- 激活您的环境
- 手动下载 .whl 包
https://pypi.org/simple/
/
- 在激活环境的情况下,导航到您从命令行下载 .whl 的文件夹
- 执行:
点安装 package_name_whatever.whl
我知道原来的问题是关于 MacOS 下的 conda。但我想分享一下我在 Ubuntu 20.04.
上的经历
在我的例子中,问题是由于 ~/.bashrc
中定义的别名:alias pip='/usr/bin/pip3'
。该别名优先于其他所有内容。
因此,出于测试目的,我删除了别名 运行 unalias pip
命令。那么active conda环境对应的pip
就已经正常执行了
同样的问题适用于 python
命令。
卸载重复的 python 安装。只需保留 anaconda 并使用此处指定的所需 python 版本创建一个环境:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html。然后你的 python 和 pip 版本将随着你在 envs 之间切换而改变。
我在这里看到了很多好的答案,但仍然想分享对我有用的答案,尤其是当您从 pip-era 切换到 conda-era 时。按照此操作,您可以使用 conda
和 pip
.
安装任何软件包
背景
- 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
conda 4.2.13 MacOSX 10.12.1
我正在尝试将 pip
中的软件包安装到使用 anaconda 创建的新环境(虚拟)中。 In the Anaconda docs 它说这完全没问题。它的完成方式与 virtualenv 相同。
Activate the environment where you want to put the program, then pip install a program...
我在 Ananconda 中创建了一个空环境,如下所示:
conda create -n shrink_venv
激活它:
source activate shrink_venv
然后我可以在终端中看到我正在我的环境中工作 (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 的 Pillow 有疑问,所以我想从 pip
获取它,并且自从文档说没问题。
which -a pip
的输出:
/usr/local/bin/pip
/Users/my_user/anaconda/bin/pip
** 更新 **
我看到这是很常见的问题。我发现 conda env 不能很好地与 PYTHONPATH 配合使用。系统似乎总是在 PYTHONPATH 位置查找,即使您使用的是 conda 环境。现在,我在使用 conda 环境时总是 运行 unset PYTHONPATH
,而且效果更好。我在 mac.
对于 运行 遇到这种情况的其他人,我发现这是最直接的解决方案:
运行
conda create -n venv_name
和conda 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 并输入
pip install package-name
会自动安装到anaconda环境中,无需使用
conda install package-name
由于某些 conda 软件包可能缺乏超时支持,因此需要使用 pip 安装,这是一种方法
如果你在 anaconda 中安装了 pip,你可以 运行 在 jupyter notebook 或链接到 anaconda
的 python shell 中执行以下操作pip.main(['install', 'package-name'])
使用 pip.__version__
检查您的 pip 版本。如果是 10.x.x
或更高版本,请使用这行代码
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package-name'])
在你的 jupyter notebook 中,你可以这样通过 pip 在单元格中安装 python 包;
!pip install package-name
或者您可以使用与 anaconda
关联的 python 版本!python3.6 -m pip install package-name
如果创建conda环境时没有添加pip
conda create -n env_name pip
也没有在环境中安装 pip
source activate env_name
conda install pip
那么你得到的唯一 pip 就是系统 pip,它将全局安装包。
正如您在此 issue 中看到的那样,即使您执行了上述任一过程,pip 在 conda 环境中的行为仍然有点不确定。
为了确保使用安装在 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" "$@"
}
希望对您有所帮助。
我在 anaconda 上安装非 conda 包时遇到了问题,我按照这里最喜欢的答案进行操作但并不顺利(可能是因为我的 anaconda 在 F 目录中,而创建的 env 在 C 和 bin 中文件夹未创建,我不知道但它没有用)。
根据 anaconda pip 已经安装(可以在 anaconda 提示符下使用命令“conda list
”找到),但是 pip 包没有安装所以这就是我所做的,我再次安装了 pip 并且然后 pip 安装包。
conda install pip
pip install see
see
是非 conda 包。
对于那些希望使用 pip 在 conda 中安装少量软件包然后使用的人,
sudo $(which pip) install <instert_package_name>
对我有用。
解释
无论如何,对我来说,which pip
似乎非常可靠,可以找到您所在位置的 conda env pip 路径。但是,当使用 sudo
时,这似乎会重定向路径或以其他方式破坏它。
使用 $(which pip)
独立于 sudo
或任何命令执行此操作,类似于 运行ning /home/<username>/(mini)conda(3)/envs/<env_name>/pip
in Linux。这是因为 $()
是单独 运行 并且文本输出添加到外部命令。
如果您仅想要安装 conda。只需从您的 PATH 变量中删除所有其他 python 路径。
仅剩:
C:\ProgramData\Anaconda3
C:\ProgramData\Anaconda3\Scripts
C:\ProgramData\Anaconda3\Library\bin
这允许您只使用 pip install *
,它将直接安装到您的 conda 安装中。
以上回答主要基于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<package-name>
这对我来说效果很好。如果您安装有任何问题,请评论。
如果您正在使用 windows OS 打开 Anaconda Prompt 并输入 activate yourenvname
如果您使用的是 mac 或 Linux OS,请打开 Terminal 并输入 source activate yourenvname
yourenvname
这里是你想要安装pip包的环境
输入以上命令后,您必须在控制台输出中看到您的环境名称从 base
更改为您输入的环境 yourenvname
(这意味着您现在处于所需的环境上下文中)
那么您需要做的就是正常的 pip install
命令,例如 pip install yourpackage
这样做,pip 包将安装在您的 Conda 环境中
我通过以下方式解决了这个问题:
如果您将 non-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 库目录,而不是与 (non-anaconda) pip
关联的库目录编辑:
这样做的原因如下:
命令 pip
引用了一个特定的 pip file/shortcut(which -a pip
告诉你是哪个)。同样,命令 python
引用特定的 python 文件(which -a python
告诉您是哪个文件)。由于某种原因,这两个命令可能会变得不同步,因此您的 'default' pip 与默认 python 位于不同的文件夹中,因此与不同版本的 python 相关联。
相比之下,python -m pip
构造不使用pip
命令指向的快捷方式。相反,它要求 python 找到 其 版本的 pip 并使用该版本安装软件包。
这对我有用(参考图片链接)
- 打开 Anaconda
- Select 主页下方左侧窗格中的环境
- 就在您 select 编辑的位置右侧和 "search environments" 栏下方,您应该会看到 base(root)。点击它
- 应该会出现一个指向右边的三角形,点击它会出现 select "open terminal"
- 在这里使用常规的 pip install 命令。无需指向环境/路径
为了将来参考,如果您碰巧已经满足要求,您可以找到您的包下载到的文件夹。如果您在终端中向上滚动,就可以看到它。它应该是这样的:要求已经满足,然后是路径
[
python -m pip install Pillow
将使用当前 Python 激活的点
source activate shrink_venv
取决于您如何配置 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}
One extra commet. The way how you install pip might create issues:
您应该使用:conda install pip --> 使用 pip 安装的新包将添加到 conda 列表中。
You shodul NOT use: sudo apt install python3-pip --> 新包将不会添加到 conda 列表中(所以是不受 conda 管理),但您仍然可以使用它们(有可能发生冲突)。
嗯,上面的方法我都试过了。 None 对我有用,因为公司环境中的代理设置存在问题。幸运的是我可以从浏览器打开 pypi 网站。最后,以下对我有用:
- 激活您的环境
- 手动下载 .whl 包
https://pypi.org/simple/
/ - 在激活环境的情况下,导航到您从命令行下载 .whl 的文件夹
- 执行: 点安装 package_name_whatever.whl
我知道原来的问题是关于 MacOS 下的 conda。但我想分享一下我在 Ubuntu 20.04.
上的经历在我的例子中,问题是由于 ~/.bashrc
中定义的别名:alias pip='/usr/bin/pip3'
。该别名优先于其他所有内容。
因此,出于测试目的,我删除了别名 运行 unalias pip
命令。那么active conda环境对应的pip
就已经正常执行了
同样的问题适用于 python
命令。
卸载重复的 python 安装。只需保留 anaconda 并使用此处指定的所需 python 版本创建一个环境:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html。然后你的 python 和 pip 版本将随着你在 envs 之间切换而改变。
我在这里看到了很多好的答案,但仍然想分享对我有用的答案,尤其是当您从 pip-era 切换到 conda-era 时。按照此操作,您可以使用 conda
和 pip
.
背景
- 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