英文:
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%. How to get remote golang packages?
问题
我按照Golang教程http://golang.org/doc/code.html#remote中的说明进行操作。
我的环境设置如下:
C:\sbox\go\example>set go
GOPATH=C:\sbox\go\example
GOROOT=C:\Go
example/
文件夹下只有一个src/
文件夹:
C:\sbox\go\example\
|
--src\
然后我按照说明调用go get
命令,但是出现了错误:
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": 在 %PATH% 中找不到可执行文件
调用go get
之后,我的example/
文件夹变成了这样:
C:\sbox\go\example\
|
--src\
|
code.google.com\
|
--p\
然后我在我的目录结构中添加了一些代码,变成了这样:
C:\sbox\go\example\
|
--src\
|
---code.google.com\
| |
| --p\
|
---github.com\
|
--user\
|
--hello\
| |
| --hello.go
|
--newmath\
|
--sqrt.go
hello.go
的内容如下:
package main
import (
"fmt"
"github.com/user/newmath"
//"code.google.com/p/go.example/newmath"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", newmath.Sqrt(2))
}
sqrt.go
的内容如下:
// Package newmath is a trivial example package.
package newmath
// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
我只是复制/粘贴了它们。都按照教程中的说明进行操作。然后我运行go install
并运行项目。一切正常:
C:\sbox\go\example\src\github.com\user\hello>go install
C:\sbox\go\example\bin>hello
Hello, world. Sqrt(2) = 1.414213562373095
然后我再次运行go get
,但是出现了相同的错误:
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": 在 %PATH% 中找不到可执行文件
好的,我将bin/
目录添加到PATH中并再次运行go get
,但是仍然出现相同的错误:
C:\sbox\go\example>set PATH=%PATH%;C:\sbox\go\example\bin
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": 在 %PATH% 中找不到可执行文件
我需要做什么才能按照教程中的说明获得结果 - 安装远程包并使用它们?
英文:
I do as written an the Golang tutorial http://golang.org/doc/code.html#remote
My env settings:
C:\sbox\go\example>set go
GOPATH=C:\sbox\go\example
GOROOT=C:\Go
The example/
folder has only src/
folder:
C:\sbox\go\example\
|
--src\
Now I call go get
as described and get an error:
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
After calling go get
, though, my example/
folder becomes like this:
C:\sbox\go\example\
|
--src\
|
code.google.com\
|
--p\
And that's all. Nothing more installed.
Then I add a code to my directory structure and it becomes like this:
C:\sbox\go\example\
|
--src\
|
---code.google.com\
| |
| --p\
|
---github.com\
|
--user\
|
--hello\
| |
| --hello.go
|
--newmath\
|
--sqrt.go
hello.go
is like this:
package main
import (
"fmt"
"github.com/user/newmath"
//"code.google.com/p/go.example/newmath"
)
func main() {
fmt.Printf("Hello, world. Sqrt(2) = %v\n", newmath.Sqrt(2))
}
sqrt.go
is like this:
// Package newmath is a trivial example package.
package newmath
// Sqrt returns an approximation to the square root of x.
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z - x) / (2 * x)
}
return z
}
I just cope/paste them. All as written in the tutorial. Then I do go install
and run the project. All works fine:
C:\sbox\go\example\src\github.com\user\hello>go install
C:\sbox\go\example\bin>hello
Hello, world. Sqrt(2) = 1.414213562373095
Now I again run go get
and get the same error:
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
Ok, I add bin/
directory to the PATH and run go get
again but get the same error:
C:\sbox\go\example>set PATH=%PATH%;C:\sbox\go\example\bin
C:\sbox\go\example>go get code.google.com/p/go.example/hello
# cd .; hg clone -U https://code.google.com/p/go.example C:\sbox\go\example\src\code.google.com\p\go.example
package code.google.com/p/go.example/hello: exec: "hg": executable file not found in %PATH%
What do I need to do get the result as described in the tutorial - remote packages are installed and I can use them?
答案1
得分: 18
你正在尝试安装的软件包是使用Mercurial(hg
)源代码控制系统的。你需要安装Mercurial才能克隆该软件包。
英文:
The package you are trying to install is under the Mercurial (hg
) source control system. You need to install Mercurial to be able to clone the package.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论