Проблема с добавлением зависимости тензорного потока для scala 2.12.11 - PullRequest
1 голос
/ 20 июня 2020

Я следую руководству по обнаружению объектов в scala. У меня возникают проблемы с добавлением зависимости tensorFlow. Я выполнил инструкции официального Tensorflow для Scala веб-сайта http://platanios.org/tensorflow_scala/installation.html, но, похоже, это не работает. Я также использовал для проекта Java 11 JDK. Однако всякий раз, когда я пытаюсь добавить зависимость sbt libraryDependencies += "org.platanios" % "tensorflow" % "0.4.0" classifier "linux-cpu-x86_64", я получаю в IntelliJ ошибку «Зависимости не найдены для данного импорта». Есть идеи, как это правильно настроить?

Ответы [ 2 ]

3 голосов
/ 20 июня 2020

Попробуйте заменить один % в строке зависимости на дважды %%:

libraryDependencies += "org.platanios" %% "tensorflow" % "0.4.0" classifier "linux-cpu-x86_64"
2 голосов
/ 20 июня 2020

Вдобавок к тому, что уже предлагал предыдущий ответ , я считаю, что, вероятно, стоит упомянуть, что (до 2.12) библиотеки в 2.x не являются двоично-совместимыми между версиями. Для библиотек Scala принято добавлять _2.x к идентификатору артефакта опубликованного библиотечного JAR. Поскольку SBT был построен на основе Scala (и это его де-факто стандартный инструмент сборки), он принимает эти соглашения, и оператор %% автоматически добавит этот дополнительный «квалификатор» на основе версии Scala, которую вы используются.

Обратите внимание здесь, на mvnrepository.com , как идентификатор артефакта изменяется между Maven и объявлением зависимости SBT (в Maven идентификатор артефакта - tensorflow_2.12, в SBT %% позволяет не указывать это).

Одиночный % обычно используется для Java зависимостей (на которые не влияет вышеупомянутое соглашение).

В качестве альтернативу (которую я предлагаю просто поиграть и убедиться, что там нет magi c), вы также можете использовать %, чтобы указать зависимость Scala и явно указать версию Scala в идентификаторе артефакта, как следует:

libraryDependencies += "org.platanios" % "tensorflow_2.12" % "0.4.0" classifier "linux-cpu-x86_64"

Хорошая новость заключается в том, что, начиная с Scala 2.13, эта проблема была решена на самом root временном интервале. diate, которое также было введено для обеспечения взаимодействия между скомпилированным кодом Scala 2.13 и Scala 3.x.

EDIT

То, что вы обнаружили, на самом деле было проблемой в документации это было уже сообщалось , я открыл PR , чтобы исправить это.

...