【问题标题】:Golang Error : Package command not foundGolang 错误:找不到包命令
【发布时间】:2017-11-08 12:57:22
【问题描述】:

运行 .go 文件时出现此错误。

./instance.go: line 1: package: command not found
./instance.go: line 3: syntax error near unexpected token `newline'
./instance.go: line 3: `import ('

到目前为止,我已经看到该错误通常意味着未设置 GOPATH,但是,echo "$GOPATH" 输出 /root/go 而我的路径当前是 /bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/go/bin:/root/go/bin:/bin:/root/go/bin

这是 instance.go 的前几行:

package webrun

import (
        "context"
        "crypto/hmac"
        "crypto/rand"

【问题讨论】:

  • 如果你在做go run instance.go,问题是你不能运行不在主包中的 go 文件。 webrun 是一个包或库,不是可执行文件。
  • 我在一系列其他文件中都有它,我会运行什么?以下是一些文件:` app.yaml dns.go instance README.md templates util CONTRIBUTORS LICENSE instance.go connectedk statkeeper tmpimg`
  • 您能否添加更多信息:文件的更多内容,具体而言,您如何尝试“运行此 go 文件”,您尝试了哪些命令。这个包在你的文件系统中的什么位置?
  • 我目前在/root/go/src/----------------/--------/instance的目录下- 当然编辑。这还包含其余的包文件。我尝试使用 ./instance 像 SH 一样运行文件,但这不起作用,所以我改为 ./instance.go 。我该如何运行它?
  • 你应该有一个带有package main 的文件,它有一个`func main() {...`,这个函数应该是你程序的开始,这就是你应该go run 的文件。在该文件中,您可以导入 dns.go 和您拥有的任何其他 .go 文件。

标签: go


【解决方案1】:

这些不是 Go 错误。

但是,我能够通过尝试执行 go 源文件来重现您的错误:

$ chmod +x in.go
$ ./in.go
./in.go: line 1: package: command not found
./in.go: line 3: syntax error near unexpected token `newline'
./in.go: line 3: `import ('

你不能用 Go 来做这件事,因为它没有被解释。您需要先将代码编译为可执行文件,然后才能运行它。

您可以阅读有关如何compile and run a go program here 的帮助。

在你的情况下,

go run instance.go

将尝试编译并运行您正在执行的源文件,但正如另一位评论者指出的那样,不在main 包中的代码并非旨在直接执行。

如果这是你的代码,你需要把它写在 package main 中,如果不是,那么你可能正在尝试执行一个库(这意味着我不清楚你想要做什么)。

【讨论】:

    【解决方案2】:

    您只能 ./ 可运行的文件。您的 go 文件不可运行。您需要将其编译为二进制文件并在其上执行 ./(dotslash)。

    【讨论】:

    • 请注意,./ 不是运行程序的语法,正如您的解释似乎暗示的那样——它只是一个路径前缀。任何可以被 shell 定位的程序——/path/to/program,或者只是program,如果程序恰好位于你的PATH 上的目录中——只需将其作为 shell 命令的第一个单词即可运行。 ./program 代替 program 起作用,因为除非您将程序安装在 shell 知道要查找它的地方,否则需要告诉 shell 确切的位置。当前目录不是shell默认查找程序的地方。
    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 2016-07-12
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多