Установка пакета python без компилятора C ++ - PullRequest
1 голос
/ 06 января 2020

Я пытаюсь заставить пакет HDBSCAN работать на машине Windows 7 без компилятора C ++. К сожалению, установка компилятора невозможна. Я читал, что в некоторых пакетах есть предварительно скомпилированные файлы колес, для установки которых не требуется компилятор. В примечаниях к установке указано «Двоичные колеса для ряда платформ доступны благодаря работе Райана Хелински». Тем не менее, нет упоминания о том, где их можно найти. Мои вопросы:

  1. Как получить файл .whl для пакета HDBSCAN?
  2. Можно ли просто скомпилировать + установить на другом компьютере и скопировать его? Если да, то что общего у машины, на которой я работаю, с той, на которой должен выполняться код? Могу ли я сделать это на компьютере Windows 10, или он должен быть также Win7, нужно ли запускать одинаковые Windows обновления на обоих компьютерах и т. Д. c?

Ответы [ 4 ]

1 голос
/ 08 января 2020

Похоже, что не существует готового дистрибутива wheel , опубликованного самими сопровождающими проекта на PyPI .

Как уже упоминалось другими участниками, один может получить такие wheel дистрибутивы от третьих лиц, таких как "Неофициальные Windows бинарники Кристофа Гольке для Python пакетов расширений" .

Это также, конечно, Можно создать такие колеса самостоятельно на одной машине, а затем повторно использовать ее на другой. Насколько я знаю в случае Windows, обе машины должны иметь одинаковую версию интерпретатора (младший) Python, а также одинаковую битность (оба 32-битных или оба 64-битных). Точная версия операционной системы не должна иметь значения (от Windows 10 до Windows 7 или наоборот должна работать).

1 голос
/ 08 января 2020

В итоге я заставил это работать, скомпилировав на другом компьютере и скопировав с него пакет. Крайне важно, чтобы требуемые пакеты были одинаковой версии на обеих машинах, поэтому я просто настроил новую среду conda, в которой были те же версии пакетов, что и на целевой машине, затем установил hdbscan с помощью pip и скопировал. Я беспокоился о совместимости Windows версии, но это сработало, хотя я установил на Windows 10 и перешел на компьютер с Win7.

0 голосов
/ 08 января 2020

Я только что проверил. Python 3.8 закодировано в C. Вам нужен компилятор C, а не C ++. MINGW - это один, а Tiny CC Win32 - еще один (маленький, производящий быстро медленные исполняемые файлы). Смотрите также этот список бесплатных C или компиляторов C ++.

Возможно (может потребоваться несколько дней работы), возможно, использовать некоторые WSL или некоторые эмуляторы Linux, такие как JSLinux (он работает в веб-браузере). Тогда вы могли бы (мучительно) создать кросс-компилятор (начиная сначала с tiny cc -win32 , затем компилируя старый кросс-компилятор G CC 3, а затем компилируя с этим более новый C ++ G CC, et c ....)

Но реальность такова, что вам нельзя позволять это делать. Ваша настоящая проблема не техническая: почему вы не можете установить, а затем использовать компилятор C ++, такой как MinGW ? Получить разрешение (и ресурсы) для установки некоторых ....

В качестве альтернативы рассмотрите возможность установки Linux дистрибутива (убедитесь, что вам разрешено это делать). Большинство из них имеют последние Python и G CC ...

Можно ли просто скомпилировать + установить на другом компьютере и скопировать его?

Это называется кросс-компиляция и возможно в целом. Дело в том, что это должно быть разрешено. Вы должны найти соответствующие кросс-компиляторы для вашей ситуации.

Если вам позволено, вы даже можете использовать живую Linux флешку ....

Некоторые C компиляторы написано в Python существует ... Вы можете использовать их для кросс-компиляции tiny cc для Win32 . Тогда у вас должен быть C компилятор для Win32. Затем вы можете скомпилировать старый G CC, et c .... Qemu для windows. Вы можете запустить Linux с кросс-компилятором G CC в Qemu.

0 голосов

здесь вы можете скачать файл колеса: https://www.lfd.uci.edu/~gohlke/pythonlibs/ для python 3.5> или PyPi для более старых версий

  • run python -m pip установить загруженный файл для вашего pythonversion.whl

По второму вопросу: да, вы можете, но довольно сложно, и вам следует избегать его, когда вы можете:)

...