在Go项目文件夹中运行python脚本(使用脚本的项目/相对文件路径)

时间:2018-10-04 20:54:10

标签: python go exec

我正在尝试在Go中执行python脚本。但是,在我所看到的任何地方,没有任何东西可以解释如何使用项目/相对路径执行脚本。我的代码在GitHub上,并且不需要脚本的完整路径(“ home / user / Documents / projectFolder / script.py)

相反,我需要一个项目/相对路径(“ /script.py”或等效路径)

最终,我如何执行script.py,而不必在特定目录中查找它?

注意:我的项目位于“家庭/用户/文档/项目”

编辑:更改了“最终”部分

1 个答案:

答案 0 :(得分:0)

由于Go是一种编译语言,通常会产生一个可执行文件,因此项目结构在编译时几乎丢失了。因此,项目相对路径在运行时没有意义。您将需要另一种方式来查找脚本(以及将其转到执行程序的脚本中)。

一种执行此操作的方法是要求可执行文件和脚本位于彼此之间相对已知的位置(例如,位于同一目录中的scripts文件夹和bin文件夹)。然后,您可以os.Args[0]获取可执行文件的路径,然后可以使用该路径来构建脚本的路径。要构建路径,您可以查看filepath软件包。

编辑:阅读了更新的问题后,我发现了packr项目,该项目似乎提供了一种在二进制文件中包含静态文件的方法。我从未使用过该项目,也不知道如何确切地使用它,但是看来您应该能够将脚本文件存储在二进制文件中,然后以某种方式将脚本传递给python。例如,您可以将其写入临时文件或使用-c参数将其传递给python。这种方法需要您使用packr命令行工具来构建项目。另外,如果包含大文件,二进制文件的大小也会增加。