tox, cython и fasttext

Я делаю проект с tox тестированием и использованием fasttext пакета Python. fasttext использует cython. Я столкнулся с ошибкой cython во время настройки среды tox: ImportError: No module named Cython.Build.

Я могу заставить его работать, если позволю tox использовать пакеты сайтов.

Я создал небольшой тест, который выдает такое же сообщение об ошибке:

tox.ini:

[tox]
envlist = py27

[testenv:py27]
# sitepackages=True
commands = 
    python -m pytest --doctest-modules testinstall.py
deps=
    pytest
    cython
    fasttext

setup.py:

from setuptools import setup
setup(
    setup_requires=['cython'],
    install_requires=['cython', 'fasttext'],
)

Ошибка, которую я получаю от tox, гласит:

Collecting pytest
  Using cached pytest-3.0.6-py2.py3-none-any.whl
Collecting cython
  Using cached Cython-0.25.2-cp27-cp27mu-manylinux1_x86_64.whl
Collecting fasttext
  Using cached fasttext-0.8.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-8NfmOs/fasttext/setup.py", line 3, in <module>
        from Cython.Build import cythonize
    ImportError: No module named Cython.Build

Я вижу, что возникла проблема с порядком установки зависимостей pip, см., например, https://github.com/h5py/h5py/issues/535, но у меня сложилось впечатление, что эта проблема решена.

Я вижу обходной путь в setup_requires with Cython?, но не вижу, чтобы мой модуль мог его использовать обходной путь.

Это проблема fasttext? Или я пропускаю какую-то настройку?


person Finn Årup Nielsen    schedule 21.02.2017    source источник
comment
github.com/tox-dev/tox/issues/42   -  person funky-future    schedule 08.06.2017


Ответы (1)


Я мог бы обмануть tox, чтобы сначала установить cython, используя indexserver. Идея состоит в том, чтобы сделать вид, что вы устанавливаете cython с другого индексного сервера. Для вашего случая это будет:

[tox]
envlist = py27
# trick to enable pre-installation of Cython
indexserver =
    preinstall = https://pypi.python.org/simple

[testenv:py27]
# sitepackages=True
commands = 
    python -m pytest --doctest-modules testinstall.py
deps=
    :preinstall: cython
    pytest
    fasttext

Кредиты: https://github.com/cggh/scikit-allel/blob/v1.1.10/tox.ini

person Andre Miras    schedule 28.04.2018