管理环境变量

3

我之前在Python项目中使用过像virtualenvvirtualenvwrapper这样的Python工具,但现在我正在开发一个Go项目,因此我想要一个通用的工具来在需要时切换环境变量。

workon myproject
....
deactivate myproject

我特别喜欢使用virtualenv-wrapper的工作流程,其中包含了预激活脚本和后激活脚本,我可以使用preactivate.sh

export MYVAR=xxx 

以及 postactivate

unset MYVAR

我提到的工具似乎都是Python和pip为中心,但由于我的项目使用Go编写,我不知道是否合适使用提供环境变量管理功能的Python工具。你有什么通用性更强且易于设置的建议吗?这个问题并不是特定于Go语言的。

1
设置和取消设置环境变量是与操作系统相关而不是编程语言相关的。可以随意使用最初用于Python的工具,也可以用于Go。 - Alfe
我明白你的意思,但我认为这些工具有点过头了。仅使用Bash脚本就可以实现我想要的功能,但我肯定有人已经实现了类似的东西吧? - fractalous
@fractalous 实际上,你只需要设置一个变量($GOPATH)就可以设置不同的工作空间。你真的需要一个工具来完成这个吗? - fuz
我可能希望我的项目从环境变量中读取配置值。每个项目当然都有不同的配置值。例如,API秘钥通常存储在环境变量中,以避免出现在源代码中。 - fractalous
3个回答

1

0
您可以尝试使用 envirius(通用虚拟环境管理器),它允许编译任何版本的 go,并创建基于其上的任意数量的环境。$GOPATH/$GOROOT 取决于每个特定环境。

此外,它还可以创建混合语言的环境。

以下是使用 envirius 编译基于 Go 的应用程序的示例:

$ nv mk go-hugo-test --go=1.2.1
Creating environment: go-hugo-test ...
 * installing go==1.2.1 ...
 * done (in 8 secs.)

$ nv ls 
Available environment(s):
go-hugo-test (go==1.2.1)

$ nv on go-hugo-test
(go-hugo-test) $ go get github.com/spf13/hugo
(go-hugo-test) $ cd $GOPATH/src/github.com/spf13/hugo
(go-hugo-test) $ go build -o hugo main.go
(go-hugo-test) $ cd -
(go-hugo-test) $ hugo version
Hugo Static Site Generator v0.11-dev

0
如果在未来,您正在寻找更平台无关且轻量级的东西,一个很好的选择是Biome。它提供了一个简单的接口来定义一个环境,可以用来为克隆应用程序的任何人提供指定的环境。

http://github.com/1egoman/biome

(完全透明:我是作者)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接