рецепт conda-forge для пакета python с расширением fortran, не работающим на appveyor - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь получить рецепт сборки conda, чтобы пройти все тесты CI по рецептам conda-forge / staged-recipes. Вот ссылка на запрос на извлечение Пакет python имеет расширение fortran и использует numpy.distutils в setup.py для создания расширения. Обведите CI для Linux, Travis-CI для OSX, но я не могу заставить Appveyor для Windows работать с рецептом conda-build.

При использовании Miniconda для сборки Appveyor для Windows и сборки Travis CI для OSX и Linux для репозитория пакетов все работает и тесты проходят. Я также могу заставить рецепт conda-build работать локально на Windows и Linux, но, как вы можете видеть из запроса на получение conda-forge, тесты не проходят для Windows с использованием Appveyor.

При импорте теста не удалось загрузить расширение fortran с помощью ImportError: DLL load failed: The specified module cannot be found. Модуль расширения скопирован в каталог site-packages, copying build\lib.win-amd64-3.6\timml\besselaesnew.cp36-win_amd64.pyd C:\bld\timml_1541596078787\_h_env\Lib\site-packages\timml, поэтому я озадачен, почему он не найден. Я прочитал о различиях между .pyd и dll и попробовал --compiler=mingw32 вместо --compiler=msvc, как упоминалось здесь . Это все еще не сработало. Я также добавил zlib в раздел host и run после прочтения this , и это не помогло.

Будем весьма благодарны за любые советы по получению рецепта сборки conda для пакета python с расширением fortran, работающего на Appveyor. Аргументы компилятора в файле setup.py для Windows копируются ниже на случай, если это имеет значение.

if os.name == "nt": compile_args = ["-static-libgcc", "-Wall", "-shared"]

1 Ответ

0 голосов
/ 10 ноября 2018

Проблема заключалась в разнице между файлами dll и .pyd и спецификацией компилятора. После рассмотрения conda-forge-pinning conda_build_config.yaml , способ выбрать mingw вместо msvc:

requirements:
  build:
    - {{ compiler('fortran') }}
    - {{ compiler('m2w64_c') }}  # [win]
    - {{ compiler('m2w64_fortran') }}  # [win]
...