Как сделать папку Octave path root для всех подпапок - PullRequest
0 голосов
/ 11 июля 2020

У меня есть папка для M-файлов Octave в C:\\Users\Dropbox\Octave, в которой находятся различные подпапки по категориям функций (нормальное распределение, chisq ...). Я только начал создавать эти подпапки, и они будут продолжать меняться (добавлять, удалять, перетасовать) с течением времени.

Я просто хотел бы установить эту папку как root и иметь там рекурсивный поиск функций Octave, точно так же, как вы устанавливаете путь к классам в Java, и JVM выполняет поиск во всех папках.

Я использовал addpath(genpath('C:\\Users\Dropbox\Octave')), но сгенерированные пути затем фиксируются, не отражая последующих изменений подпапок.

Должен Добавляю addpath(genpath('C:\\Users\Dropbox\Octave')) в файл .octaverc?

1 Ответ

3 голосов
/ 11 июля 2020

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

Простое добавление пути для существующего сеанса октавы не приведет к постоянному изменяется на обычный путь, который октава инициализирует при запуске. Поэтому, когда вы говорите:

, я использовал addpath (genpath ('C: \ Users \ Dropbox \ Octave')), но сгенерированные пути затем фиксируются и не отражают последующие изменения подпапок.

это не имеет смысла, потому что, как только вы выйдете из сеанса октавы, эти добавленные пути должны были вообще исчезнуть и не появиться в последующих сеансах октавы.

Это более вероятно что в какой-то момент вы добавили эти пути, а затем использовали команду savepath, в результате чего ваши пользовательские пути были добавлены в ваш файл .octaverc.

Если это так, тогда да, вы можете ожидайте, что октава не будет "обновлять" то, что было написано в вашем .octaver c файле, если вы не вызовете savepath снова с обновленным определением пути.

Если вам нужна команда addpath(genpath('C:\Users\Dropbox\Octave')), которую вы упомянули вызывается каждый раз при запуске октавы, чтобы загружалась текущая / обновленная структура каталогов, тогда да, лучший способ сделать это - добавить эту команду в ваш файл .octaverc. Убедитесь, что вы удалили из файла .octaver c строки, относящиеся к предыдущим изменениям, внесенным savepath. Обратите внимание, что может быть несколько уровней файлов октавера c, которые вам нужно проверить (см. соответствующую страницу в руководстве )

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

Хотя вы можете считать этот последний подход утомительным, программно он является наиболее рекомендуемым, поскольку он делает зависимости в вашем коде ясными. Это особенно важно, если вы когда-нибудь планируете поделиться своим кодом (и вдвойне, если вы хотите, чтобы он был совместим с Matlab).


PS. Все вышеизложенное в основном относится и к Matlab, за исключением того, что a) matlab savepath сохраняет информацию о пути в файле с именем pathdef.m, а не непосредственно в ваших файлах запуска, и b) Matlab использует startup.m вместо .octaverc как файлы запуска. Кроме того, если вы не заботитесь о том, чтобы делать это программно, matlab предоставляет pathtool, который является графическим интерфейсом для добавления / сохранения каталогов в путь к matlab.

...