使用 Pip 安装包到 Anaconda 环境
- 2024-12-18 08:39:00
- admin 原创
- 212
问题描述:
conda 4.2.13 MacOSX 10.12.1
我正在尝试将软件包安装到pip
使用 anaconda 创建的新环境(虚拟)中。Anaconda 文档中说这完全没问题。操作方式与 virtualenv 相同。
激活您想要放置程序的环境,然后 pip 安装一个程序...
我在 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 与 配合得不好。即使您使用的是 conda 环境,PYTHONPATH
系统似乎也总是在位置中查找。现在,我总是在使用 conda 环境时运行,而且效果要好得多。我在 Mac 上。PYTHONPATH
`unset PYTHONPATH`
解决方案 1:
对于遇到这种情况的人,我发现这是最直接的解决方案:
运行
conda create -n venv_name
和conda activate venv_name
,其中venv_name
是您的虚拟环境的名称。运行
conda install pip
。这会将 pip 安装到你的 venv 目录。找到你的 anaconda 目录,然后找到实际的 venv 文件夹。它应该位于类似 的地方
/anaconda/envs/venv_name/
;或者,你也可以运行conda activate venv_name
。通过执行安装新软件包
/anaconda/envs/venv_name/bin/pip install package_name
;或者,简单地运行pip install package_name
。
现在应该可以使用虚拟环境的 pip 成功安装包!
解决方案 2:
我按照以下方式解决了这个问题:
如果您的默认 pip 不是 conda pip,但默认 python 是 conda 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>
,您还可以使用带有 python 的模块标志-m
,以便使用 anaconda python 进行安装
python -m pip install <package>
这会将包安装到 anaconda 库目录,而不是与(非 anaconda)pip 关联的库目录
编辑-其工作原理如下:
该命令pip
引用特定的 pip 文件/快捷方式(which -a pip
告诉您哪一个)。同样,该命令python
引用特定的 python 文件(which -a python
告诉您哪一个)。出于某种原因,这两个命令可能会变得不同步,因此您的“默认”pip 与您的默认 python 位于不同的文件夹中,因此与不同版本的 python 相关联。
相反,该python -m pip
构造不使用pip
命令指向的快捷方式。相反,它要求 python 找到其pip 版本并使用该版本安装包。
解决方案 3:
你所要做的就是打开 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 版本pip.__version__
。如果是 版本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
解决方案 4:
这对我有用(请参阅链接的图片)
打开 Anaconda
在主页下方的左侧窗格中选择“环境”
在您选择的位置的右侧和“搜索环境”栏下方,您应该看到 base(root)。单击它
应该出现一个指向右边的三角形,单击它并选择“打开终端”
这里使用常规的 pip install 命令。无需指向环境/路径
供将来参考,如果您恰好已经满足了某个要求,您可以找到软件包正在下载到的文件夹。如果您在终端中向上滚动,就可以看到它。它应该显示以下内容:要求已经满足,然后是路径
[ ]
解决方案 5:
如果你在创建 conda 环境时没有添加 pip
conda create -n env_name pip
也没有在环境中安装 pip
source activate env_name
conda install pip
那么您获得的唯一 pip 就是系统 pip,它将全局安装软件包。
正如您在本期中所看到的,即使您执行了上述任一过程,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
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" "$@"
}
希望这对你有帮助。
解决方案 6:
我在这里看到了很多不错的答案,但我仍然想分享对我有用的答案,特别是如果你从 pip-era 切换到 conda-era。之后,你可以同时使用conda
和安装任何软件包pip
。
背景
PIP——仅限 Python 包管理器
Conda - 多种语言的包和环境管理器,包括 Python
每次创建新的 conda 环境时默认安装 Pip
# install 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
解决方案 7:
对于那些希望使用 pip 在 conda 中安装少量软件包的人来说,
sudo $(which pip) install <instert_package_name>
对我有用。
解释
对我来说,这似乎which pip
非常可靠,可以找到您所在位置的 conda env pip 路径。但是,当使用时sudo
,这似乎会重定向路径或以其他方式破坏这一点。
使用$(which pip)
可独立于sudo
或任何命令执行此命令,类似于/home/<username>/(mini)conda(3)/envs/<env_name>/pip
在 Linux 中运行。这是因为$()
单独运行,并且文本输出添加到外部命令中。
解决方案 8:
以上所有答案主要基于虚拟环境的使用。我刚刚全新安装了 anaconda3,其中没有安装任何虚拟环境。因此,我找到了一个更好的替代方案,而不必考虑创建虚拟环境。
如果您在 Linux 中安装了多个 pip 和 python 版本,那么首先运行以下命令来列出所有已安装的 pip 路径。
pip 在哪里
您将获得类似这样的输出。
点:/usr/bin/pip
/home/prabhakar/anaconda3/bin/pip
/usr/share/man/man1/pip.1.gz
复制您想要用于安装包的 pip 路径,并/home/prabhakar/anaconda3/bin/pip
在下面的命令中用 sudo 替换后粘贴它。
sudo
/home/prabhakar/anaconda3/bin/pip
安装<package-name>
对我来说效果很好。如果您在安装时遇到任何问题,请发表评论。
解决方案 9:
如果你使用的是 Windows 操作系统,请打开Anaconda Prompt并输入activate yourenvname
如果你使用的是 Mac 或 Linux 操作系统,请打开终端并输入source activate yourenvname
yourenvname
这是你想要安装 pip 包的环境
输入上述命令后,您必须看到您的环境名称在控制台输出中从更改base
为您输入的环境yourenvname
(这意味着您现在处于所需的环境上下文中)
然后你需要做的就是正常pip install
命令例如pip install yourpackage
这样,pip 包将安装在你的 Conda 环境中
解决方案 10:
根据此Anaconda 博客文章中描述的信息,我认为最佳做法是创建一个环境文件,以便可以可预测地创建 conda 环境。
我尝试了这里发布的几个答案,但没有成功,而且我不想摆弄 python 路径等。相反,我添加了一个environment.yml
类似于这样的文件:
name: your-environment-name
channels:
- defaults
dependencies:
- python=3.9.12
- requests=2.28.1
- pandas=1.4.4
- pip=21.2.4
- pip:
- python-dotenv==0.19.2
这可以保证您首先安装所有 conda 依赖项,然后在 conda 环境中安装 pip 并使用它来安装无法通过 conda 获得的依赖项。这是可预测的、可重复使用的,并且遵循博客文章中描述的建议。
然后使用以下命令使用该文件创建一个新的 conda 环境:
conda env create -f environment.yml
解决方案 11:
我在 anaconda 上安装非 conda 包时遇到了问题,我按照这里最受欢迎的答案操作,但效果并不好(可能是因为我的 anaconda 在 F 目录中,而创建的 env 在 C 中,并且没有创建 bin 文件夹,我不知道但它没有用)。
根据 anaconda,pip 已经安装(在 anaconda 提示符下使用命令“ conda list
”可以找到),但是 pip 包没有安装,所以我做了以下操作,我再次安装了 pip,然后 pip 安装了包。
conda install pip
pip install see
see
是非 conda 包。
解决方案 12:
取决于您如何配置 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 管理)但您仍然可以使用它们(可能发生冲突)。
解决方案 13:
我尝试了上述所有方法。由于公司环境中的代理设置存在问题,所以没有一种方法对我有用。幸运的是,我可以从浏览器打开 pypi 网站。最后,以下方法对我有用:
激活您的环境
从https://pypi.org/simple/ <package_name>/手动下载 .whl 包
在激活环境的情况下,从命令行导航到下载 .whl 的文件夹
执行:pip install package_name_whatever.whl
解决方案 14:
您所要做的就是激活您的环境:
$ conda activate <env-name>
然后安装 pip,如果在环境中找不到 pip 或 pip3
$ conda install pip
使用 pip 或 pip3 作为
$ pip3 install <pkg-name>
解决方案 15:
如果你只想安装 conda。只需从 PATH 变量中删除所有其他 python 路径即可。
仅留下:
C:ProgramDataAnaconda3
C:ProgramDataAnaconda3Scripts
C:ProgramDataAnaconda3Libraryin
这样您就可以使用pip install *
并且它就会直接安装到您的 conda 安装中。
解决方案 16:
我在 Anaconda 环境中使用 pip 命令安装软件包时遇到了同样的问题。它说软件包已安装,但它并未安装在 Anaconda 环境中,而是安装在系统范围的软件包中。当我使用 ssh 连接到服务器时,我遇到了这个问题。
以下是像魔术一样起作用的一行解决方案:
$(which python) -m pip install <package-name>
无需执行额外的安装和设置路径。通过添加,$(which python) -m
pip 将按预期工作。
享受。
解决方案 17:
我知道最初的问题是关于 MacOS 下的 conda。但我想分享我在 Ubuntu 20.04 上的经验。
就我而言,问题是由于在~/.bashrc
:中定义的别名造成的alias pip='/usr/bin/pip3'
。该别名优先于其他所有内容。
因此,出于测试目的,我删除了别名运行unalias pip
命令。然后,活动 conda 环境的相应命令pip
已正确执行。
同样的问题也适用于python
指挥。
解决方案 18:
今天我花了几个小时查看了这个答案和许多其他答案,但即使凭借 30 年的编程经验也无法解决这个问题。
我跑了:
conda create -n myenv python=3.9
conda activate myenv
无法使用 pip。但是,在另一个环境(例如 myenv2、myenv3、myenv4)中它可以工作。
我遇到了可怕的 urllib3 httpsconnection 错误。
所以我认为它一定是缺少 urllib3 错误或其他原因。事实证明,情况比这要险恶得多。不幸的是,它在其他环境中也能正常工作,对我来说,我认为这与我在 Windows 10 上使用 WSL2 的 Debian 有关。修复很简单:
rm -rf $HOME/.cache
pip 缓存因之前安装的相同环境而损坏。可能是因为我在 conda 基础上运行了更新并进行了发行版升级。因为我想使用带有 flask 的 WSGI 环境运行带有 apache2 的生产系统,所以我希望始终使用相同的 conda 实例名称。所以这是必须修复的!
解决方案 19:
我尝试pycorenlp
使用进行安装Anaconda Prompt
。但是,它对我来说不起作用。因此,我pip
使用 进行安装conda install pip
。然后我执行pip install pycorenlp
,它成功了。
解决方案 20:
卸载重复的 python 安装。只需保留 anaconda 并创建一个具有所需 python 版本的环境,如下所示:https: //docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html。然后,当你在环境之间切换时,你的 python 和 pip 版本就会发生变化。