Установка numpy перед использованием numpy .distutils.core.setup - PullRequest
1 голос
/ 03 февраля 2020

Я использую numpy.distutils для установки пакета (mypackage) с модулем frotran. Проблема в том, что если я выполняю pip install mypackage в среде, в которой нет numpy, я получаю следующую ошибку:

ModuleNotFoundError: Нет модуля с именем 'numpy'

Простое решение - попросить пользователей (если они у меня появятся) pip install numpy перед установкой моего пакета, но я не думаю, что это очень элегантное решение.

Мне пришла в голову идея вызвать setuptools.setup только с setup_requires=['numpy'], прежде чем я импортирую numpy, и это, кажется, работает хорошо. Это мой setup.py:

import setuptools

setuptools.setup(
    setup_requires=[
        'numpy'
    ],)

from numpy.distutils.core import setup, Extension

mod = Extension(name='mypackage.amodule', sources=['source/a.f90'])

setup(name='mypackage',
      packages=['mypackage'],
      ext_modules=[mod],)

Честно говоря, я не совсем понимаю, что означает называть пустой setup() (без имени, без пакета). Это хорошее решение? Это как-то плохая практика?

1 Ответ

1 голос
/ 03 февраля 2020

Это общая проблема. Как установить зависимость время сборки ? Возможно, вы захотите использовать файл pyproject.toml и воспользоваться функцией build-system. См. PEP517 . И пример здесь:

[build-system]
build-backend = "setuptools.build_meta"
requires = ["setuptools", "numpy"]

Используйте инструмент pep517 для построения распределений ( sdist и wheel ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...