Clojure Can';t使用environ访问leiningen project.clj中的环境变量

Clojure Can';t使用environ访问leiningen project.clj中的环境变量,clojure,environment-variables,leiningen,Clojure,Environment Variables,Leiningen,我正在尝试使用environ访问project.clj:dev概要文件中指定的环境变量。这看起来是一个设置不同配置选项的好方法,但我似乎无法让它工作。我的project.clj条目如下所示: :profiles {:dev {:dependencies [[javax.servlet/servlet-api "2.5"] [ring-mock "0.1.5"]] :env {:foo "FOO" :bar "BAR"}}} :plugi

我正在尝试使用environ访问project.clj:dev概要文件中指定的环境变量。这看起来是一个设置不同配置选项的好方法,但我似乎无法让它工作。我的project.clj条目如下所示:

:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
                      [ring-mock "0.1.5"]]
       :env {:foo "FOO" :bar "BAR"}}}
:plugins [[lein-environ "0.4.0"]]
如果我运行
lein repl
并要求(使用ns中的
)从我的项目中输入名称空间,
environ.core/env
只返回nil:

(environ.core/env :foo)
nil

将:env条目添加到.lein/profiles.clj中的:user配置文件也不起作用。我做错了什么?

好吧,这是一个更彻底地阅读文档的案例。:)要访问项目映射中指定的环境变量,您需要lein environ插件。添加如下内容:

:profiles
{:dev {:dependencies [[javax.servlet/servlet-api "2.5"]
                      [ring-mock "0.1.5"]]
       :env {:foo "FOO" :bar "BAR"}}}
:plugins [[lein-environ "0.4.0"]]

成功了。但是,在文档中很容易忽略这一点。

如果运行
(System/getenv)
您是否会将“FOO”或“FOO”或“:FOO”视为任何键?例如,我注意到(env.core/env:pwd)返回了我的环境中“pwd”键引用的值。@noisesmith我可以用environ提取环境变量,比如PATH,它只是在我的defproject:profiles下定义的那些它似乎看不到的变量。不,我看不到foo有任何变化。如果environ可以得到其他env变量,这不是environ的问题,而是leiningen的问题。很可能您没有正确添加环境变量。@noisesmith这正是我所想的,但我很确定我是这样想的。与公认的答案进行比较。