Невозможно запустить Base.compilecache: «не найден в пути» - PullRequest
0 голосов
/ 31 мая 2018

Я сейчас пытаюсь предварительно скомпилировать модуль Julia, чтобы он мог работать быстрее.Тем не менее, мне кажется странным, что запись __precompile__() до объявления модуля, похоже, не произвела никакого файла кэша в папке.

Затем я попытался вызвать функцию Base.compilecache, выполнив следующие шаги:

  1. Запустите REPL в папке проекта
  2. include("M.jl")
  3. Base.compilecache("M")

Однако, несмотря на то, что первые два шага заканчиваются без проблем и что я могу фактически запустить функции, определенные в модуле, третий шаг жалуется: «ОШИБКА: ArgumentError: M notнайдено в пути ", и я все еще не могу сгенерировать кеш для модуля.

Что я здесь не так сделал?

1 Ответ

0 голосов
/ 31 мая 2018

Скомпилированные модули создаются в определяемом пользователем месте, в linux обычно ~/.julia/lib/v0.6/.Я уверен, что если вы загляните туда, вы найдете .ji файлы, соответствующие предварительно скомпилированным версиям ваших модулей.Удалите один и попробуйте импортировать снова в сеансе julia, чтобы подтвердить, что он попытается выполнить прекомпиляцию заново;если это так, это означает, что ваша директива __precompile__() работает.

Кроме того, будьте осторожны с push! путем к вашему пользовательскому модулю (то есть части исходного кода .jl, а не путем для предварительно скомпилированного.ji файлов) до LOAD_PATH (то есть push!(LOAD_PATH, "./")), если он не «установлен» в месте по умолчанию (обычно ~/.julia/v0.6/).Джулии нужен доступ к обоим, когда вы собираетесь импортировать модуль.

(PS. Вы также должны увидеть прекомпиляцию, если обновите свой модуль)

...