Проблема с установкой numpy
На продакшене используется legacy версия numpy 1.10.4. При попытке установить его на новой машине с чистой виртуальной средой virtualenv выходит ошибка
AttributeError: module 'numpy' has no attribute '__version__'
Происходит она в блоке стандартного патча от setuptools в функции
site-packages\setuptools\msvc.py
178 строка.
def msvc14_gen_lib_options(*args, **kwargs):
"""
Patched "distutils._msvccompiler.gen_lib_options" for fix
compatibility between "numpy.distutils" and "distutils._msvccompiler"
(for Numpy < 1.11.2)
"""
if "numpy.distutils" in sys.modules:
import numpy as np
if LegacyVersion(np.__version__) < LegacyVersion('1.11.2'): # Ошибка идет именно здесь
return np.distutils.ccompiler.gen_lib_options(*args, **kwargs)
return get_unpatched(msvc14_gen_lib_options)(*args, **kwargs)
Есть идеи, как фиксить?
P.S Инфа по системе и пакетам
Windows 10
python3.6
setuptools 57.0.0
pip 21.1.3
P.S.S
К несчастью, использовать более свежую версию нет возможности из-за зависимостей.
Ответы (1 шт):
Я вижу два пути.
Первый. Залезть ручками в setuptools и пофиксить найденную вами строчку. Написать что-нибудь такое:
if not hasattr(np, '__version__') or LegacyVersion(np.__version__) < LegacyVersion('1.11.2'):
Второй. Скопировать numpy с продакшена. Вам нужны папки Lib\site-packages\numpy и Lib\site-packages\numpy-1.10.4.dist-info. Кроме того могут быть несколько файлов вне этих папок. Полный список файлов, принадлежащих пакету, перечислены в файле Lib\site-packages\numpy-1.10.4.dist-info\RECORD
Немного подумал и нашёл ещё третий путь. Даунгреднуть пайтон до 3.5 и установить скомпилированный whl командой pip install numpy-1.10.4-cp35-none-win_amd64.whl
Для 3.6 бинарника numpy нет. Всё, что есть, лежит здесь: https://pypi.org/project/numpy/1.10.4/#files