当我的包是 Python 3.6 时,为什么 conda 要将所有东西降级到 Python 2.7?

Why does conda want to downgrade everything to Python 2.7 when my package is Python 3.6?

我正在尝试将我们的应用程序升级到 Python 3,但无法让 conda 接受包兼容。

该包似乎构建正常并且似乎是一个 Python 3 包:

 λ conda search jbagdal --info

jbagdal 2.2.0 py36_vc15hca0d6c3_0
---------------------------------
file name   : jbagdal-2.2.0-py36_vc15hca0d6c3_0.tar.bz2
name        : jbagdal
version     : 2.2.0
build       : py36_vc15hca0d6c3_0
build number: 0
size        : 8.7 MB
subdir      : win-64
url         : file://devserver/conda_packages/win-64/jbagdal-2.2.0-py36_vc15hca0d6c3_0.tar.bz2
md5         : 600a8...770e9
timestamp   : 2019-07-02 14:42:03 UTC
dependencies:
  - geos
  - numpy
  - proj4
  - python >=3.6,<3.7.0a0
  - sqlite

但是,当我使用 Python 3.6.8 创建一个新的 conda 环境并尝试安装软件包时,我收到消息说许多依赖项将降级到 Python 2.7。

λ conda install jbagdal

The following packages will be DOWNGRADED:

  certifi                                  2019.6.16-py36_0 --> 2019.6.16-py27_0
  pip                                         19.1.1-py36_0 --> 19.1.1-py27_0
  python                                   3.6.8-h9f7ef89_7 --> 2.7.15-h2880e7c_4
  setuptools                                  41.0.1-py36_0 --> 41.0.1-py27_0
  vc                                        14.1-h0510ff6_4 --> 9-h7299396_1
  wheel                                       0.33.4-py36_0 --> 0.33.4-py27_0
  wincertstore                           0.2-py36h7fe50ca_0 --> 0.2-py27hf04cefb_0

我查了一下,有些人建议明确指定 Python 版本,但这也不起作用。

 λ conda install jbagdal python==3.6.8
Collecting package metadata: done
Solving environment: failed

UnsatisfiableError: The following specifications were found to be in conflict:
  - jbagdal
  - python==3.6.8
Use "conda search <package> --info" to see the dependencies for each package.

我的包裹有什么问题?为什么 conda 不相信它是 Python 3 包?我需要在配方中更改什么才能将其构建为 Python 3.

meta.yaml

package:
  name: jbagdal
  version: 2.2.0

source:
  git_rev: trunk
  git_url: https://srcserver/GDAL/gdal.git

build:
  features:
    - vc9     [win and py27]
    - vc10    [win and py34]
    - vc14    [win and py35]
    - vc15    [win and py>=36]

requirements:
  build:
    - swig
    - sqlite
    - python
    - numpy
    - setuptools
    - {{ compiler('c') }}
    - {{ compiler('cxx') }}

  run:
    - python
    - sqlite
    - numpy
    - geos
    - proj4

about:
  home: www.gdal.org
  license:
  license_file:

conda 信息的输出

     active environment : deleteme
    active env location : C:\ProgramData\Anaconda2\envs\deleteme
            shell level : 1
       user config file : C:\Users\jontwo\.condarc
 populated config files : C:\Users\jontwo\.condarc
          conda version : 4.6.8
    conda-build version : 3.0.15
         python version : 2.7.15.final.0
       base environment : C:\ProgramData\Anaconda2  (writable)
           channel URLs : file://devserver/conda_packages/win-64
                          file://devserver/conda_packages/noarch
                          https://conda.anaconda.org/scitools/win-64
                          https://conda.anaconda.org/scitools/noarch
                          https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/win-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\ProgramData\Anaconda2\pkgs
                          C:\Users\jontwo\.conda\pkgs
                          C:\Users\jontwo\AppData\Local\conda\conda\pkgs
       envs directories : C:\ProgramData\Anaconda2\envs
                          C:\Users\jontwo\.conda\envs
                          C:\Users\jontwo\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.6.8 requests/2.21.0 CPython/2.7.15 Windows/10 Windows/10.0.17134
          administrator : False
             netrc file : None
           offline mode : False

Conda 构建命令确实指定了 Python 版本:

conda build . --output-folder v:\conda_packages --python=3.6.8

并且当前conda环境是Python3.6.8:

 λ python --version
Python 3.6.8 :: Anaconda, Inc.

答案是 meta.yaml 不正确。

    - vc14    [win and py35]
    - vc15    [win and py>=36]

应该是

    - vc14    [win and py>=35]

[track_features] 错误是因为 conda 在安装之前在本地机器上寻找 vc15。一旦我将其改回 vc14,一切正常。