git clone 后必须进入模块根目录再执行 go install .@latest,否则因 go 1.16+ 要求模块上下文而报错;beego/v2 需显式指定版本后缀,避免误装已归档的 v1 版本;混用 gopath/src 和 pkg/mod 会导致依赖冲突,推荐统一使用 modules 模式或关闭 go111module;windows 下需确保 %gopath%/bin 在 path 中且防病毒软件未拦截 bee.exe。

git clone 后必须进目录再 go install
直接在任意路径下执行 go install github.com/beego/bee/v2@latest 很可能失败,因为 Go 1.16+ 默认要求模块上下文 —— 即当前目录或父目录要有 go.mod,否则报错:go install: version is required when current directory is not in a module。这不是权限或网络问题,是 Go 工具链的强制行为。
正确做法是先用 git clone 拉源码,再进对应目录执行安装:
git clone https://github.com/beego/bee.git $GOPATH/src/github.com/beego/beecd $GOPATH/src/github.com/beego/bee-
go install .@latest(注意末尾的.@latest,不是包路径)
这样能确保 go install 在模块根目录下运行,自动识别 go.mod 并完成编译安装。
beego/v2 必须显式指定版本后缀
Beego 已发布 v2 版本,主模块路径是 github.com/beego/beego/v2,不再是旧版的 github.com/astaxie/beego。如果你仍用老命令 go get github.com/astaxie/beego,会拉到已归档的 v1 分支,且与新版 bee 工具不兼容(比如 bee new 生成的项目结构错乱)。
安装 v2 正确方式:
- 拉取 v2 源码:
git clone -b v2.1.0 https://github.com/beego/beego.git $GOPATH/src/github.com/beego/beego - 进目录编译:
cd $GOPATH/src/github.com/beego/beego && go install .@latest - 验证:
go list -m github.com/beego/beego应输出类似github.com/beego/beego/v2 v2.1.0
GOPATH 下 src 和 pkg/mod 混用会冲突
Git 源码编译安装时,如果同时启用了 Go modules(GO111MODULE=on),Go 工具可能优先从 $GOPATH/pkg/mod 加载依赖,而不是你手动放进去的 $GOPATH/src 代码 —— 导致你改了源码却没生效,或者 bee run 报错说找不到 web.Router 等符号。
稳妥做法是统一路径来源:
- 若坚持用
src目录管理(传统 GOPATH 模式):执行go env -w GO111MODULE=off,再安装 - 若想用 modules(推荐):不要往
src放,直接go install github.com/beego/beego/v2@v2.1.0,让 Go 自动下载到pkg/mod - 二者混用时,
go build会优先读go.sum锁定的版本,忽略src里的修改
Windows 下 bee.exe 权限和 PATH 是隐形门槛
即使 go install 成功,Windows 用户常遇到 'bee' is not recognized as an internal or external command。这不是安装失败,而是 bee.exe 没进系统 PATH。
查位置:go env GOPATH → 看到 C:\Users\xxx\go,那 bee.exe 就在 C:\Users\xxx\go\bin;确认该路径是否已加进系统环境变量 PATH。
容易被忽略的点:
- Git Bash 中修改了
PATH,但 CMD 或 PowerShell 不继承,需分别配置 - 某些 Windows 安装会把
GOBIN设为%GOPATH%\bin,但未实际创建该目录,手动mkdir %GOPATH%\bin再重试 - 防病毒软件有时会拦截刚生成的
bee.exe,临时禁用或添加白名单
Git 源码编译看似可控,实则对 Go 模块机制、路径优先级、Windows 环境变量三者耦合度极高 —— 最小改动原则是:先关 modules 做纯 GOPATH 安装,跑通后再切回 modules 模式。别在没验证 go env 输出前假设路径一定对。











