Рецепт conda-forge для пакета python с расширением fortran, не работающим на appveyor
Я пытаюсь получить рецепт сборки 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 and run, прочитав это и это не помогло.
Будем весьма благодарны за любые советы, как получить рецепт conda-build для пакета python с расширением fortran, работающего на Appveyor. Компилятор аргументы в setup.py
Файл для Windows копируется ниже в случае, если это имеет значение.
if os.name == "nt":
compile_args = ["-static-libgcc", "-Wall", "-shared"]
1 ответ
Проблема заключалась в разнице между файлами dll и.pyd и спецификацией компилятора. После просмотра conda-forge-pinning conda_build_config.yaml, способ выбрать mingw вместо msvc:
requirements:
build:
- {{ compiler('fortran') }}
- {{ compiler('m2w64_c') }} # [win]
- {{ compiler('m2w64_fortran') }} # [win]