使用PIP Install安装的PYPI更新软件包吗?



我使用anaconda(因为它很棒(,并且通过conda install提供的软件包非常广泛。但是,我确实需要安装Conda存储库中不可用的软件包,因此可以从PYPI中获取。

我的问题:当我运行命令conda update --all时,Conda还会更新这些PYPI软件包吗?还是我必须单独更新它们?Conda文档似乎不包含答案。这个问题和答案似乎表明不,康达无法管理PYPI软件包,但我仍然不确定。

no,conda updateconda install不要更新使用pip安装的软件包(或使用pip安装它们(。

这些 conda命令仅检查您的"默认" anaconda-channels或用-c指定的anconda通道,它们会忽略其他所有内容。conda list是一个例外,它也显示了使用pip安装的软件包,这些包装用<pip>标记,不会更新。

使用pipsix的一个示例:

$ conda create -n testenv python=3.5
Fetching package metadata .................
Solving package specifications: .
Package plan for installation in environment testenv:
The following NEW packages will be INSTALLED:
    pip:            9.0.1-py35_1
    python:         3.5.3-3
    setuptools:     27.2.0-py35_1
    vs2015_runtime: 14.0.25123-0
    wheel:          0.29.0-py35_0
Proceed ([y]/n)? y
$ activate testenv

使用pip安装six(旧版本(:

(testenv) $ pip install six==1.6
Collecting six==1.6
  Downloading six-1.6.0-py2.py3-none-any.whl
Installing collected packages: six
Successfully installed six-1.6.0

conda update没有更新它(请注意,six未在"所有请求的软件包"中列出,但它在conda list中列出(:

(testenv) $ conda update --all
Fetching package metadata .................
Solving package specifications: .
# All requested packages already installed.
# packages in environment at testenv:
#
pip                       9.0.1                    py35_1
python                    3.5.3                         3
setuptools                27.2.0                   py35_1
vs2015_runtime            14.0.25123                    0
wheel                     0.29.0                   py35_0
(testenv) $ conda list
# packages in environment at testenv:
#
pip                       9.0.1                    py35_1
python                    3.5.3                         3
setuptools                27.2.0                   py35_1
six                       1.6.0                     <pip>
vs2015_runtime            14.0.25123                    0
wheel                     0.29.0                   py35_0

,但可以使用pip升级:

(testenv) $ pip install six --upgrade
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six
  Found existing installation: six 1.6.0
    Uninstalling six-1.6.0:
      Successfully uninstalled six-1.6.0
Successfully installed six-1.10.0

只是表明Anaconda频道中有一个较新的six(当我做conda update时被忽略(:

(testenv) $ conda install six
Fetching package metadata .................
Solving package specifications: .
Package plan for installation in environment testenv:
The following NEW packages will be INSTALLED:
    six: 1.10.0-py35_0
Proceed ([y]/n)?

conda 4.6具有实验功能,可以启用与PIP安装的软件包的互操作性。使用conda config --set pip_interop_enabled true。可以更新/更改Conda(即删除(可以"管理"的非文字安装的Python软件包,以满足当前求解。通常从车轮安装了可管理的软件包。使用较新版本的PIP安装的SDIST通常也可以管理。但是,如果版本等效,Conda不会将Conda软件包的非conda安装程序包切换。

无法管理的非核心安装的python软件包将锚定在适当的环境,直到通过其他方式将其删除。难以控制的软件包的一个示例是使用pip install -e的"可编辑"安装。

所有这些都适用于conda update --all

这个问题是旧的,但是这是一个批处理脚本,可能有助于在 Windows 上自动化此过程。它涉及浏览conda list并找到标有 pypi 标签的软件包,然后随后用 pip --upgrade en ensse升级(假设它们已过时;否则将返回标准的Requirement already up-to-date消息(。

将以下内容放入批处理文件(例如contapip.bat(中,然后尝试:

@echo off
set packages=pip install --upgrade
for /f "tokens=1" %%i in ('conda list ^| findstr /R /C:"pypi"') do (call :join %%i)
@echo on
%packages%
@echo off
goto :eof
:join
set packages=%packages% %1
goto :eof

相关内容

  • 没有找到相关文章

最新更新