Поскольку Go является скомпилированным языком, который (как правило) приводит к одному исполняемому файлу, структура проекта в значительной степени теряется во время компиляции.Поэтому относительный путь проекта не имеет смысла во время выполнения.Вам понадобится другой способ найти ваш сценарий (а также получить тот, который выполняет вашу программу).
Один из способов сделать это - потребовать, чтобы ваш исполняемый файл и сценарий находились в местах, которые вы знаете относительнодруг к другу (например, папка scripts
и папка bin
, которые находятся в одном каталоге).Затем вы можете os.Args[0]
получить путь к вашему исполняемому файлу, который вы затем сможете использовать для построения пути к вашему сценарию.Чтобы построить путь, вы можете взглянуть на пакет filepath
.
Редактировать: Прочитав ваш обновленный вопрос, я нашел проект packr
, который, кажется, обеспечивает способ включить статические файлы в ваш двоичный файл.Я никогда не использовал проект и не знаю, как его точно использовать, но похоже, что вы должны иметь возможность сохранить файл скрипта в бинарном файле и затем каким-то образом передать скрипт в python.Например, вы можете записать его во временный файл или передать его в python, используя аргумент -c
.Этот подход потребует от вас создания проекта с использованием инструмента командной строки packr
.Кроме того, если вы включите большие файлы, ваш двоичный файл также увеличится в размере.