Anaconda 如何从conda安装pillow而不降级Python,也不从源代码构建pillow
我在Ubuntu19.04上使用了miniconda,由普通用户安装,而不是通过sudo将其与系统安装的软件包分开。我的所有康达套餐均通过以下方式更新:Anaconda 如何从conda安装pillow而不降级Python,也不从源代码构建pillow,anaconda,python-imaging-library,conda,Anaconda,Python Imaging Library,Conda,我在Ubuntu19.04上使用了miniconda,由普通用户安装,而不是通过sudo将其与系统安装的软件包分开。我的所有康达套餐均通过以下方式更新: condaw update -n envpython3 --all 现在,Python 3.7.4是安装在conda env中的Python版本 查看pillow的文档,我发现版本7似乎是最新的(但是版本6可能会做得很好,因为它支持3.7.x,但是这里的“x”是这个问题的关注点;请继续阅读): 但是,我可以使用来自同一个conda env的p
condaw update -n envpython3 --all
现在,Python 3.7.4是安装在conda env中的Python版本
查看pillow的文档,我发现版本7似乎是最新的(但是版本6可能会做得很好,因为它支持3.7.x,但是这里的“x”是这个问题的关注点;请继续阅读):
但是,我可以使用来自同一个conda env的pip安装它,而没有任何抱怨:
$ pip install Pillow
Collecting Pillow
Downloading https://files.pythonhosted.org/packages/a4/da/2bd281c875686230eabc13d20ab590ea617563b0e746abfb0698c4d5b645/Pillow-6.1.0-cp37-cp37m-manylinux1_x86_64.whl (2.1MB)
Installing collected packages: Pillow
Successfully installed Pillow-6.1.0
$
然而,我认为这可能是一件坏事,因为我推测康达将管理许多其他包,而pip将无法充分处理(因此我在大多数情况下更喜欢康达而不是pip)
因此,问题是:如何使用最新版本的conda managed pillow,而不降级任何其他包(如Python),也不从源代码构建pillow
理想情况下,我可以解决这个问题,而不必为使用pillow的脚本使用完全独立的conda env,这是一个维护负担(例如,我设想这种情况会发生在我身上:“该死!我以为我已经安装了pillow!啊,不,它在另一个conda env.叹气中。”),但如果这是答案,那就这样吧,但我仍然想知道为什么枕头(或它所依赖的东西)似乎在迫使python降级
(此外,上面的输出没有说明为什么需要降级软件包,我只能想象这是因为当我想使用最新版本的时,pillow需要3.7.1。)一般来说,将PyPI软件包安装与Conda混合使用是一个坏主意,尤其是如果计划更新env中的任何软件包。Anaconda团队在博客帖子“”中对可能遇到的各种陷阱有一个很好的概述 选择权 创建一个新环境 根据他们的建议,以及我个人的经验,在创建新的环境时要自由,一旦项目规范被强化,就要将新的包安装和更新限制在必要的范围内(例如,所需的bug修复、API更新等)。我知道你明确说过你不想这样做,但在我看来这是最好的选择 尝试其他渠道 虽然在您的案例中,这并没有实现,但检查替代通道(如Conda Forge)可能是有用的(即,
-c Conda Forge
)。同时,我要提醒大家,不要简单地搜索巨蟒云,寻找一个碰巧有你想要的频道。仅从您信任的渠道安装
封装钉扎
另一个选择是明确表示您不想更改(例如,
python=3.7.4
)。这将迫使依赖项求解器找出如何准确地完成问题中所要求的内容,如果它不起作用,则有相当有力的证据表明仅使用Conda软件包是不可能实现这种配置的。是的,混合使用PyPI通常是个坏主意,尤其是如果您计划更新其中的任何软件包,这听起来像是你的意图(见)。您是否检查过其他频道选项(例如,conda forge
)?也许还值得一看解算器的功能。@merv我曾尝试过conda forge
,但结果是空的。您提供的链接确实给了我一个我已经得出结论的答案:我必须有一个单独的conda env才能继续。这是一个麻烦,但直到这个包是建立在康达,这是我必须做的。我还没有试过这个把戏,但我会去探索。@merv如果你把你的评论作为一个答案,我会这样做。
$ condaw install -n envpython3 -c anaconda pillow
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: done
## Package Plan ##
environment location: /home/brentg/conda/Ubuntu.19.04.miniconda3/envs/envpython3
added / updated specs:
- pillow
The following packages will be downloaded:
package | build
---------------------------|-----------------
ca-certificates-2019.5.15 | 1 134 KB anaconda
certifi-2019.6.16 | py37_1 156 KB anaconda
freetype-2.9.1 | h8a8886c_1 822 KB anaconda
jpeg-9b | habf39ab_1 247 KB anaconda
libpng-1.6.37 | hbc83047_0 364 KB anaconda
libtiff-4.0.10 | h2733197_2 604 KB anaconda
olefile-0.46 | py37_0 48 KB anaconda
openssl-1.1.1 | h7b6447c_0 5.0 MB anaconda
pillow-6.1.0 | py37h34e0f95_0 635 KB anaconda
zstd-1.3.7 | h0b5b093_0 887 KB anaconda
------------------------------------------------------------
Total: 8.8 MB
The following NEW packages will be INSTALLED:
freetype anaconda/linux-64::freetype-2.9.1-h8a8886c_1
jpeg anaconda/linux-64::jpeg-9b-habf39ab_1
libpng anaconda/linux-64::libpng-1.6.37-hbc83047_0
libtiff anaconda/linux-64::libtiff-4.0.10-h2733197_2
olefile anaconda/linux-64::olefile-0.46-py37_0
pillow anaconda/linux-64::pillow-6.1.0-py37h34e0f95_0
zstd anaconda/linux-64::zstd-1.3.7-h0b5b093_0
The following packages will be UPDATED:
openssl pkgs/main::openssl-1.1.1c-h7b6447c_1 --> anaconda::openssl-1.1.1-h7b6447c_0
The following packages will be SUPERSEDED by a higher-priority channel:
ca-certificates pkgs/main --> anaconda
certifi pkgs/main --> anaconda
The following packages will be DOWNGRADED:
cffi 1.12.3-py37h2e261b9_0 --> 1.11.5-py37he75722e_1
chardet 3.0.4-py37_1003 --> 3.0.4-py37_1
cryptography 2.7-py37h1ba5d50_0 --> 2.4.2-py37h1ba5d50_0
libedit 3.1.20181209-hc058e9b_0 --> 3.1.20170329-h6b74fdf_2
libgcc-ng 9.1.0-hdf63c60_0 --> 8.2.0-hdf63c60_1
libstdcxx-ng 9.1.0-hdf63c60_0 --> 8.2.0-hdf63c60_1
pip 19.2.2-py37_0 --> 18.1-py37_0
pyopenssl 19.0.0-py37_0 --> 18.0.0-py37_0
pysocks 1.7.0-py37_0 --> 1.6.8-py37_0
python 3.7.4-h265db76_1 --> 3.7.1-h0371630_7
requests 2.22.0-py37_0 --> 2.21.0-py37_0
setuptools 41.0.1-py37_0 --> 40.6.3-py37_0
sqlite 3.29.0-h7b6447c_0 --> 3.26.0-h7b6447c_0
urllib3 1.24.2-py37_0 --> 1.24.1-py37_0
wheel 0.33.4-py37_0 --> 0.32.3-py37_0
Proceed ([y]/n)? n
CondaSystemExit: Exiting.
$
$ pip install Pillow
Collecting Pillow
Downloading https://files.pythonhosted.org/packages/a4/da/2bd281c875686230eabc13d20ab590ea617563b0e746abfb0698c4d5b645/Pillow-6.1.0-cp37-cp37m-manylinux1_x86_64.whl (2.1MB)
Installing collected packages: Pillow
Successfully installed Pillow-6.1.0
$