Python покрытие устанавливается без C расширения на Windows в python 3.8, но не в python 3.7, как мне принудительно установить C версию расширения? - PullRequest
0 голосов
/ 28 февраля 2020

У меня установлены python 3.7.5 и Python 3.8 на одном компьютере windows 10. Они оба были установлены из python .org / downloads. Когда я запускаю покрытие pip install (используя последнюю версию pip), он устанавливает покрытие с расширениями c под 3.7.5 и без расширений c под 3.8.2.

Как заставить принудительно установить покрытие с c расширениями, как без них производительность ужасна?

Похоже, 3.7.5 скачиваний: https://files.pythonhosted.org/packages/4b/c7/6b1af1c8806fa047469b19861a3438f9ce785aa41c831c15d676ccaaa726/coverage-5.0.3-cp37-cp37m-win32.whl

, где при 3.8.2 скачиваниях: покрытие -5.0.3.tar.gz

Более поздняя версия "без c расширений"

1 Ответ

0 голосов
/ 28 февраля 2020

На данный момент нет действительных колес coverage для Windows и Python 3.8.

Колеса 5.0.3 на PyPI помечены как совместимые с * 1006. *, поэтому CPython 3.8, с вариантом cp38m ABI, для 64-битных Windows.

Но такого варианта ABI больше нет. Python 3.8 больше не имеет двоичного варианта m (--with-pymalloc), потому что сборки с или без --with-pymalloc теперь совместимы с ABI .

Пип последовал его примеру и прекратил добавлять флаг m при поиске колес , и проект wheel, который создает этих дистрибутивных файлов , также сбросил флаг m .

Однако coverage.py использует более раннюю версию wheel для построения дистрибутивов , они используют 0.33.1, в то время как вышеуказанные изменения были добавлены в версии 0.33.5 . Вы уже подали отчет об ошибке в проект , я тоже добавил свои выводы.

К счастью, флаг поверхностный. Вы можете загрузить файл колеса непосредственно из PyPI, переименовать файл (удалив m из cp38m) и затем использовать pip install path/to/renamed/coverage-5.0.3-cp38-cp38m-win_amd64.whl.

Примечание: та же проблема относится к 3,9 колеса.

...