anaconda - 为什么 conda 的删除与 conda 的安装不对称?
问题描述
为什么看似简单/原子conda
安装会导致相当复杂的卸载?
我最近尝试了以下conda install
$ conda install -c conda-forge imageio-ffmpeg
Collecting package metadata (current_repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.7.12
latest version: 4.8.1
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: /home/smgutstein/anaconda2/envs/dnn_py3
added / updated specs:
- imageio-ffmpeg
The following packages will be downloaded:
package | build
---------------------------|-----------------
imageio-ffmpeg-0.3.0 | py_0 14 KB conda-forge
------------------------------------------------------------
Total: 14 KB
The following NEW packages will be INSTALLED:
imageio-ffmpeg conda-forge/noarch::imageio-ffmpeg-0.3.0-py_0
Proceed ([y]/n)? y
Downloading and Extracting Packages
imageio-ffmpeg-0.3.0 | 14 KB | ################################################################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
这似乎是一个相当原子的安装。
但是,当我尝试卸载时,事情变得更加复杂:
$ conda uninstall imageio-ffmpeg
Collecting package metadata (repodata.json): done
Solving environment: done
==> WARNING: A newer version of conda exists. <==
current version: 4.7.12
latest version: 4.8.1
Please update conda by running
$ conda update -n base -c defaults conda
## Package Plan ##
environment location: /home/smgutstein/anaconda2/envs/dnn_py3
removed specs:
- imageio-ffmpeg
The following packages will be downloaded:
package | build
---------------------------|-----------------
absl-py-0.8.1 | py36_0 164 KB
anaconda-client-1.7.2 | py36_0 147 KB
asn1crypto-1.3.0 | py36_0 164 KB
astor-0.8.0 | py36_0 46 KB
backcall-0.1.0 | py36_0 20 KB
backports-1.0 | py_2 139 KB
bleach-3.1.0 | py36_0 221 KB
c-ares-1.15.0 | h7b6447c_1001 89 KB
ca-certificates-2019.11.27 | 0 124 KB
certifi-2019.11.28 | py36_0 153 KB
chardet-3.0.4 | py36_1003 180 KB
clyent-1.2.2 | py36_1 19 KB
cryptography-2.8 | py36h1ba5d50_0 552 KB
cudnn-7.6.5 | cuda10.0_0 165.0 MB
cycler-0.10.0 | py36_0 13 KB
cytoolz-0.10.1 | py36h7b6447c_0 377 KB
dask-core-2.9.1 | py_0 556 KB
defusedxml-0.6.0 | py_0 23 KB
entrypoints-0.3 | py36_0 12 KB
gast-0.3.2 | py_0 13 KB
giflib-5.1.4 | h14c3975_1 68 KB
idna-2.8 | py36_0 112 KB
imageio-2.6.1 | py36_0 3.2 MB
importlib_metadata-1.3.0 | py36_0 46 KB
ipykernel-5.1.3 | py36h39e3cac_1 173 KB
ipython-7.11.1 | py36h39e3cac_0 988 KB
ipython_genutils-0.2.0 | py36_0 39 KB
jasper-1.900.1 | hd497a04_4 198 KB
jedi-0.15.2 | py36_0 738 KB
joblib-0.14.1 | py_0 201 KB
jsonschema-3.2.0 | py36_0 95 KB
jupyter_client-5.3.4 | py36_0 141 KB
jupyter_console-6.0.0 | py36_0 37 KB
jupyter_core-4.6.1 | py36_0 70 KB
kiwisolver-1.1.0 | py36he6710b0_0 82 KB
lame-3.100 | h7b6447c_0 323 KB
libiconv-1.15 | h63c8f33_5 721 KB
libprotobuf-3.11.2 | hd408876_0 2.9 MB
libsodium-1.0.16 | h1bed415_0 214 KB
libwebp-1.0.1 | h8e7db2f_0 471 KB
markupsafe-1.1.1 | py36h7b6447c_0 29 KB
matplotlib-3.1.1 | py36h5429711_0 5.0 MB
mistune-0.8.4 | py36h7b6447c_0 55 KB
more-itertools-8.0.2 | py_0 39 KB
nbconvert-5.6.1 | py36_0 460 KB
nbformat-4.4.0 | py36_0 128 KB
networkx-2.4 | py_0 1.2 MB
notebook-6.0.2 | py36_0 4.0 MB
numpy-1.17.4 | py36hc1035e2_0 5 KB
numpy-base-1.17.4 | py36hde5b4d6_0 4.2 MB
olefile-0.46 | py36_0 48 KB
openh264-1.8.0 | hd408876_0 659 KB
packaging-20.0 | py_0 35 KB
pandoc-2.2.3.2 | 0 14.0 MB
pandocfilters-1.4.2 | py36_1 13 KB
parso-0.5.2 | py_0 69 KB
pexpect-4.7.0 | py36_0 80 KB
pickleshare-0.7.5 | py36_0 13 KB
pillow-7.0.0 | py36hb39fc2d_0 600 KB
pluggy-0.13.1 | py36_0 33 KB
prometheus_client-0.7.1 | py_0 42 KB
prompt_toolkit-2.0.10 | py_0 227 KB
protobuf-3.11.2 | py36he6710b0_0 635 KB
psutil-5.6.7 | py36h7b6447c_0 318 KB
ptyprocess-0.6.0 | py36_0 23 KB
py-1.8.1 | py_0 71 KB
pygments-2.5.2 | py_0 672 KB
pyopenssl-19.1.0 | py36_0 87 KB
pyparsing-2.4.6 | py_0 64 KB
pyrsistent-0.15.6 | py36h7b6447c_0 93 KB
pysocks-1.7.1 | py36_0 30 KB
pytest-5.3.2 | py36_0 365 KB
pytest-runner-5.2 | py_0 13 KB
python-utils-2.3.0 | py36_0 18 KB
pywavelets-1.1.1 | py36h7b6447c_0 3.5 MB
pyyaml-5.2 | py36h7b6447c_0 180 KB
pyzmq-18.1.0 | py36he6710b0_0 453 KB
qtconsole-4.6.0 | py_1 97 KB
requests-2.22.0 | py36_1 92 KB
scipy-1.3.2 | py36h7c811a0_0 14.0 MB
send2trash-1.5.0 | py36_0 16 KB
setuptools-44.0.0 | py36_0 510 KB
terminado-0.8.3 | py36_0 26 KB
toolz-0.10.0 | py_0 50 KB
tornado-6.0.3 | py36h7b6447c_0 583 KB
tqdm-4.41.1 | py_0 54 KB
traitlets-4.3.3 | py36_0 140 KB
urllib3-1.25.7 | py36_0 169 KB
wcwidth-0.1.7 | py36_0 24 KB
webencodings-0.5.1 | py36_1 19 KB
werkzeug-0.16.0 | py_0 255 KB
widgetsnbextension-3.5.1 | py36_0 862 KB
x264-1!152.20180806 | h7b6447c_0 631 KB
zeromq-4.3.1 | he6710b0_3 496 KB
------------------------------------------------------------
Total: 233.8 MB
The following packages will be REMOVED:
atomicwrites-1.3.0-py_0
gettext-0.19.8.1-hc5be6a0_1002
imageio-ffmpeg-0.3.0-py_0
lz4-c-1.8.3-he1b5a44_1001
pthread-stubs-0.4-h14c3975_1001
xorg-libxau-1.0.9-h14c3975_0
xorg-libxdmcp-1.1.3-h516909a_0
The following packages will be UPDATED:
absl-py 0.7.1-py36_0 --> 0.8.1-py36_0
asn1crypto anaconda::asn1crypto-1.0.1-py36_0 --> pkgs/main::asn1crypto-1.3.0-py36_0
astor 0.7.1-py36_0 --> 0.8.0-py36_0
attrs anaconda/linux-64::attrs-19.1.0-py36_1 --> pkgs/main/noarch::attrs-19.3.0-py_0
c-ares 1.15.0-h7b6447c_1 --> 1.15.0-h7b6447c_1001
cffi anaconda::cffi-1.12.3-py36h2e261b9_0 --> pkgs/main::cffi-1.13.2-py36h2e261b9_0
cloudpickle anaconda::cloudpickle-1.2.1-py_0 --> pkgs/main::cloudpickle-1.2.2-py_0
cryptography anaconda::cryptography-2.7-py36h1ba5d~ --> pkgs/main::cryptography-2.8-py36h1ba5d50_0
cudnn 7.6.0-cuda10.0_0 --> 7.6.5-cuda10.0_0
cytoolz anaconda::cytoolz-0.10.0-py36h7b6447c~ --> pkgs/main::cytoolz-0.10.1-py36h7b6447c_0
dask-core anaconda::dask-core-2.1.0-py_0 --> pkgs/main::dask-core-2.9.1-py_0
dbus conda-forge::dbus-1.13.6-he372182_0 --> pkgs/main::dbus-1.13.12-h746ee38_0
decorator anaconda/linux-64::decorator-4.4.0-py~ --> pkgs/main/noarch::decorator-4.4.1-py_0
expat conda-forge::expat-2.2.5-he1b5a44_1003 --> pkgs/main::expat-2.2.6-he6710b0_0
gast pkgs/main/linux-64::gast-0.2.2-py36_0 --> pkgs/main/noarch::gast-0.3.2-py_0
glib conda-forge::glib-2.58.3-h6f030ca_1002 --> pkgs/main::glib-2.63.1-h5a9c865_0
imageio anaconda::imageio-2.5.0-py36_0 --> pkgs/main::imageio-2.6.1-py36_0
importlib_metadata conda-forge::importlib_metadata-0.23-~ --> pkgs/main::importlib_metadata-1.3.0-py36_0
ipykernel anaconda::ipykernel-5.1.1-py36h39e3ca~ --> pkgs/main::ipykernel-5.1.3-py36h39e3cac_1
ipython anaconda::ipython-7.6.1-py36h39e3cac_0 --> pkgs/main::ipython-7.11.1-py36h39e3cac_0
ipywidgets anaconda::ipywidgets-7.5.0-py_0 --> pkgs/main::ipywidgets-7.5.1-py_0
jedi anaconda::jedi-0.13.3-py36_0 --> pkgs/main::jedi-0.15.2-py36_0
jinja2 anaconda/linux-64::jinja2-2.10.1-py36~ --> pkgs/main/noarch::jinja2-2.10.3-py_0
joblib anaconda::joblib-0.14.0-py_0 --> pkgs/main::joblib-0.14.1-py_0
jsonschema anaconda::jsonschema-3.0.1-py36_0 --> pkgs/main::jsonschema-3.2.0-py36_0
jupyter_client anaconda/noarch::jupyter_client-5.3.1~ --> pkgs/main/linux-64::jupyter_client-5.3.4-py36_0
jupyter_core anaconda/noarch::jupyter_core-4.5.0-p~ --> pkgs/main/linux-64::jupyter_core-4.6.1-py36_0
libprotobuf 3.8.0-hd408876_0 --> 3.11.2-hd408876_0
libtiff conda-forge::libtiff-4.0.10-h57b8799_~ --> pkgs/main::libtiff-4.1.0-h2733197_0
matplotlib anaconda::matplotlib-3.1.0-py36h54297~ --> pkgs/main::matplotlib-3.1.1-py36h5429711_0
mkl_fft 1.0.12-py36ha843d7b_0 --> 1.0.15-py36ha843d7b_0
mkl_random 1.0.2-py36hd81dba3_0 --> 1.1.0-py36hd6b4f25_0
more-itertools conda-forge::more-itertools-7.2.0-py_0 --> pkgs/main::more-itertools-8.0.2-py_0
nbconvert anaconda/noarch::nbconvert-5.5.0-py_0 --> pkgs/main/linux-64::nbconvert-5.6.1-py36_0
networkx anaconda::networkx-2.3-py_0 --> pkgs/main::networkx-2.4-py_0
notebook anaconda::notebook-6.0.0-py36_0 --> pkgs/main::notebook-6.0.2-py36_0
numpy 1.16.4-py36h7e9f1db_0 --> 1.17.4-py36hc1035e2_0
numpy-base 1.16.4-py36hde5b4d6_0 --> 1.17.4-py36hde5b4d6_0
openssl conda-forge::openssl-1.1.1d-h516909a_0 --> pkgs/main::openssl-1.1.1d-h7b6447c_3
packaging pkgs/main/linux-64::packaging-19.0-py~ --> pkgs/main/noarch::packaging-20.0-py_0
parso anaconda::parso-0.5.0-py_0 --> pkgs/main::parso-0.5.2-py_0
pcre conda-forge::pcre-8.41-hf484d3e_1003 --> pkgs/main::pcre-8.43-he6710b0_0
pillow anaconda::pillow-6.1.0-py36h34e0f95_0 --> pkgs/main::pillow-7.0.0-py36hb39fc2d_0
pip 19.1.1-py36_0 --> 19.3.1-py36_0
pluggy conda-forge/noarch::pluggy-0.12.0-py_0 --> pkgs/main/linux-64::pluggy-0.13.1-py36_0
prompt_toolkit anaconda/linux-64::prompt_toolkit-2.0~ --> pkgs/main/noarch::prompt_toolkit-2.0.10-py_0
protobuf 3.8.0-py36he6710b0_0 --> 3.11.2-py36he6710b0_0
psutil anaconda::psutil-5.6.3-py36h7b6447c_0 --> pkgs/main::psutil-5.6.7-py36h7b6447c_0
py conda-forge::py-1.8.0-py_0 --> pkgs/main::py-1.8.1-py_0
pygments anaconda::pygments-2.4.2-py_0 --> pkgs/main::pygments-2.5.2-py_0
pyopenssl anaconda::pyopenssl-19.0.0-py36_0 --> pkgs/main::pyopenssl-19.1.0-py36_0
pyparsing anaconda::pyparsing-2.4.0-py_0 --> pkgs/main::pyparsing-2.4.6-py_0
pyqt anaconda::pyqt-5.9.2-py36h22d08a2_1 --> pkgs/main::pyqt-5.9.2-py36h05f1152_2
pyrsistent anaconda::pyrsistent-0.14.11-py36h7b6~ --> pkgs/main::pyrsistent-0.15.6-py36h7b6447c_0
pytest conda-forge::pytest-5.2.2-py36_0 --> pkgs/main::pytest-5.3.2-py36_0
python-dateutil anaconda/linux-64::python-dateutil-2.~ --> pkgs/main/noarch::python-dateutil-2.8.1-py_0
pytz anaconda::pytz-2019.1-py_0 --> pkgs/main::pytz-2019.3-py_0
pywavelets anaconda::pywavelets-1.0.3-py36hdd077~ --> pkgs/main::pywavelets-1.1.1-py36h7b6447c_0
pyyaml 5.1.1-py36h7b6447c_0 --> 5.2-py36h7b6447c_0
pyzmq anaconda::pyzmq-18.0.0-py36he6710b0_0 --> pkgs/main::pyzmq-18.1.0-py36he6710b0_0
qtconsole anaconda::qtconsole-4.5.2-py_0 --> pkgs/main::qtconsole-4.6.0-py_1
requests anaconda::requests-2.22.0-py36_0 --> pkgs/main::requests-2.22.0-py36_1
scipy 1.2.1-py36h7c811a0_0 --> 1.3.2-py36h7c811a0_0
setuptools 41.0.1-py36_0 --> 44.0.0-py36_0
six 1.12.0-py36_0 --> 1.13.0-py36_0
sqlite 3.28.0-h7b6447c_0 --> 3.30.1-h7b6447c_0
terminado anaconda::terminado-0.8.2-py36_0 --> pkgs/main::terminado-0.8.3-py36_0
testpath anaconda/linux-64::testpath-0.4.2-py3~ --> pkgs/main/noarch::testpath-0.4.4-py_0
traitlets anaconda::traitlets-4.3.2-py36_0 --> pkgs/main::traitlets-4.3.3-py36_0
urllib3 anaconda::urllib3-1.24.2-py36_0 --> pkgs/main::urllib3-1.25.7-py36_0
werkzeug 0.15.4-py_0 --> 0.16.0-py_0
wheel 0.33.4-py36_0 --> 0.33.6-py36_0
widgetsnbextension anaconda::widgetsnbextension-3.5.0-py~ --> pkgs/main::widgetsnbextension-3.5.1-py36_0
The following packages will be SUPERSEDED by a higher-priority channel:
anaconda-client anaconda --> pkgs/main
backcall anaconda --> pkgs/main
backports anaconda --> pkgs/main
bleach anaconda --> pkgs/main
bzip2 conda-forge::bzip2-1.0.8-h516909a_0 --> pkgs/main::bzip2-1.0.8-h7b6447c_0
ca-certificates conda-forge::ca-certificates-2019.11.~ --> pkgs/main::ca-certificates-2019.11.27-0
certifi conda-forge --> pkgs/main
chardet anaconda --> pkgs/main
clyent anaconda --> pkgs/main
cycler anaconda --> pkgs/main
defusedxml anaconda --> pkgs/main
entrypoints anaconda --> pkgs/main
freetype conda-forge::freetype-2.10.0-he983fc9~ --> pkgs/main::freetype-2.9.1-h8a8886c_1
giflib conda-forge::giflib-5.1.9-h516909a_0 --> pkgs/main::giflib-5.1.4-h14c3975_1
gmp conda-forge::gmp-6.1.2-hf484d3e_1000 --> pkgs/main::gmp-6.1.2-h6c8ec71_1
graphite2 conda-forge::graphite2-1.3.13-hf484d3~ --> pkgs/main::graphite2-1.3.13-h23475e2_0
gst-plugins-base conda-forge::gst-plugins-base-1.14.5-~ --> pkgs/main::gst-plugins-base-1.14.0-hbbd80ab_1
gstreamer conda-forge::gstreamer-1.14.5-h36ae1b~ --> pkgs/main::gstreamer-1.14.0-hb453b48_1
icu conda-forge::icu-58.2-hf484d3e_1000 --> pkgs/main::icu-58.2-h9c2bf20_1
idna anaconda --> pkgs/main
ipython_genutils anaconda --> pkgs/main
jasper conda-forge::jasper-1.900.1-h07fcdf6_~ --> pkgs/main::jasper-1.900.1-hd497a04_4
jupyter_console anaconda --> pkgs/main
kiwisolver anaconda --> pkgs/main
lame conda-forge::lame-3.100-h14c3975_1001 --> pkgs/main::lame-3.100-h7b6447c_0
libiconv conda-forge::libiconv-1.15-h516909a_1~ --> pkgs/main::libiconv-1.15-h63c8f33_5
libpng conda-forge::libpng-1.6.37-hed695b0_0 --> pkgs/main::libpng-1.6.37-hbc83047_0
libsodium anaconda --> pkgs/main
libwebp conda-forge::libwebp-1.0.2-h576950b_1 --> pkgs/main::libwebp-1.0.1-h8e7db2f_0
libxcb conda-forge::libxcb-1.13-h14c3975_1002 --> pkgs/main::libxcb-1.13-h1bed415_1
libxml2 conda-forge::libxml2-2.9.9-h13577e0_1 --> pkgs/main::libxml2-2.9.9-hea5a465_1
markupsafe anaconda --> pkgs/main
mistune anaconda --> pkgs/main
mkl-service anaconda --> pkgs/main
nbformat anaconda --> pkgs/main
olefile anaconda --> pkgs/main
openh264 conda-forge::openh264-1.8.0-hdbcaa40_~ --> pkgs/main::openh264-1.8.0-hd408876_0
pandoc anaconda --> pkgs/main
pandocfilters anaconda --> pkgs/main
pexpect anaconda --> pkgs/main
pickleshare anaconda --> pkgs/main
pixman conda-forge::pixman-0.38.0-h516909a_1~ --> pkgs/main::pixman-0.38.0-h7b6447c_0
prometheus_client anaconda --> pkgs/main
ptyprocess anaconda --> pkgs/main
pycparser anaconda --> pkgs/main
pysocks anaconda --> pkgs/main
pytest-runner conda-forge --> pkgs/main
python-utils conda-forge/noarch::python-utils-2.3.~ --> pkgs/main/linux-64::python-utils-2.3.0-py36_0
qt conda-forge::qt-5.9.7-h52cfd70_2 --> pkgs/main::qt-5.9.7-h5867ecd_1
qtpy anaconda --> pkgs/main
send2trash anaconda --> pkgs/main
sip anaconda::sip-4.19.13-py36he6710b0_0 --> pkgs/main::sip-4.19.8-py36hf484d3e_0
toolz anaconda --> pkgs/main
tornado anaconda --> pkgs/main
tqdm conda-forge --> pkgs/main
wcwidth anaconda --> pkgs/main
webencodings anaconda --> pkgs/main
x264 conda-forge::x264-1!152.20180806-h14c~ --> pkgs/main::x264-1!152.20180806-h7b6447c_0
zeromq anaconda --> pkgs/main
zipp conda-forge --> pkgs/main
zstd conda-forge::zstd-1.4.0-h3b9ef0a_0 --> pkgs/main::zstd-1.3.7-h0b5b093_0
Proceed ([y]/n)? n
为什么是这样?我怎样才能在imageio-ffmpeg
不危及整个环境的情况下卸载此版本?
作为背景,我开始尝试安装/卸载此软件包,因为我正在尝试使用该moviepy
软件包。当我尝试导入此包时,出现以下错误:
RuntimeError: imageio.ffmpeg.download() has been deprecated. Use 'pip install imageio-ffmpeg' instead.'
我没有逐字遵循它,而是imageio-ffmpeg
使用, 安装conda
,但仍然收到相同的错误。当我用谷歌搜索我的错误时,我找到了一个建议的解决方案
sudo pip3 install imageio==2.4.1
所以,现在我想确保我的conda
安装不会取代我计划的pip3
安装。
解决方案
不对称
在安装部分,Conda 使用隐式--freeze-installed
标志运行,如果所有包都已经存在,则安装很简单。
在卸载中,Conda 没有等效的简单卸载。相反,它将尝试删除请求的包,以及其他包未明确安装或需要的任何依赖项。不幸的是,它似乎通过尝试解决仅包含先前请求的 env 包的环境来实现这一点,这意味着所有具有替代版本的包都需要更新。
您从不同渠道(例如conda-forge)安装但从未在您的 Conda 配置(全局或环境中)中明确定义这些渠道优先级这一事实似乎加剧了您的特殊情况。因此,大多数更改都涉及切换回包的默认频道版本。
备择方案
如果您确信没有其他任何变化,那么您可以使用该--force-remove
标志。
如果这是您安装的最新版本,另一种选择是尝试回滚修订版,但这也可能导致剧烈变化。也就是说,检查您的修订历史记录:
conda list --revisions
然后尝试安装倒数第二个。我肯定会先试运行它:
conda install --revision <your_rev> --dry-run
点
不要使用 Pip,除非你绝对必须,而且绝对不在你的基础环境中。通常,将 Pip 与 Conda 一起使用会导致不稳定(请参阅在 Conda 环境中使用 Pip)。此外,如果您必须使用它,请不要使用sudo
or pip3
。相反,激活环境并简单地使用pip install
.
一般(意见)建议
就个人而言,我发现使用 Conda 最稳定的方法是将所有 env 视为 immutable。也就是说,避免使用conda (install|update|remove|uninstall)
命令。唯一的例外是在首次指定新项目时。
无需临时conda env create -f my_env.yml
安装和删除软件包,而是编写一个 YAML 文件,并在您希望编辑环境时使用它来创建新的 env ( )。如果您需要向 env 添加新包,请编辑 YAML 并从头开始重新创建 env。
推荐阅读
- networking - Istio 可以在延迟更高、丢包的环境中工作吗?
- r - 使用 ABC_mcmc 函数时的错误:
- java - 为什么我的数据结构很慢(自定义数据结构)
- powerbi - 如何创建和发布结合多个 Power Bi 报告的移动应用程序?
- node.js - 标头已发送但不知道为什么
- python - 如何将 .wav 文件转换为 Pandas DataFrame 以将其提供给神经网络?
- android-studio - Android Studio 同步失败
- dart - 在 Flutter 中,我想在导航到新屏幕后立即调用 for 循环。我把代码放在哪里?
- tensorflow - 使用相同代码在深度学习模型中获得不同的准确性
- angular - Angular 4 SimpleChanges 无法捕获更改的日期对象