标签: direnv

docker-compose .env与direnv .envrc

我们已经使用direnv已有一段时间了,以自动将环境变量加载到特定文件夹中。从版本3开始,docker -compose似乎支持.env文件

.envrcdirenv使用的文件使用export

export NODE_ENV=development

仅在没有export获取变量值的情况下,将同一文件与docker-compose一起使用似乎无效。

NODE_ENV=development

关于如何将其统一为单个.env.envrc文件或替代direnv的任何想法?

environment-variables docker docker-compose direnv

5
推荐指数
3
解决办法
1632
查看次数

如何在 Apple M1 Silicon 笔记本电脑上安装 GRPCIO?

每次我尝试在项目中安装pip带有 GRPCIO 作为依赖项的包时,.direnv由于我的架构是 arm64,我都会遇到构建失败。在等待 GRPCIO 工作人员发布更新时,我该如何解决这个问题?

  Using cached grpcio-1.34.0.tar.gz (21.0 MB)
    ERROR: Command errored out with exit status 1:
     command: /Users/yoav/Library/Caches/pypoetry/virtualenvs/orca-g6p4a6cZ-py3.8/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/jj/r3j0p91s2qgdpcpf5ptqr9qm0000gn/T/pip-install-n05vw0u0/grpcio_103d947f24954cde8b8a019b4c9f88fe/setup.py'"'"'; __file__='"'"'/private/var/folders/jj/r3j0p91s2qgdpcpf5ptqr9qm0000gn/T/pip-install-n05vw0u0/grpcio_103d947f24954cde8b8a019b4c9f88fe/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/jj/r3j0p91s2qgdpcpf5ptqr9qm0000gn/T/pip-pip-egg-info-z41yqiw6
         cwd: /private/var/folders/jj/r3j0p91s2qgdpcpf5ptqr9qm0000gn/T/pip-install-n05vw0u0/grpcio_103d947f24954cde8b8a019b4c9f88fe/
    Complete output (10 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/jj/r3j0p91s2qgdpcpf5ptqr9qm0000gn/T/pip-install-n05vw0u0/grpcio_103d947f24954cde8b8a019b4c9f88fe/setup.py", line 359, in <module>
        if mac_target and (pkg_resources.parse_version(mac_target) <
      File "/Users/yoav/Library/Caches/pypoetry/virtualenvs/orca-g6p4a6cZ-py3.8/lib/python3.8/site-packages/pkg_resources/__init__.py", line 113, in parse_version
        return packaging.version.Version(v)
      File "/Users/yoav/Library/Caches/pypoetry/virtualenvs/orca-g6p4a6cZ-py3.8/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/version.py", …
Run Code Online (Sandbox Code Playgroud)

pip direnv apple-silicon apple-m1 grpcio

5
推荐指数
6
解决办法
2854
查看次数

当 shell 在带有 .envrc 的目录中启动时 Direnv 不加载环境

想象一下,我在一个 shell 中,工作目录设置为一个包含.envrc文件的目录。当我现在在终端模拟器中打开一个新选项卡时,一个新的 shell 会启动到与原始 shell 相同的工作目录中。

出于某种原因,该.envrc文件未加载到这个新 shell 中。如果手动退出工作目录并再次进入,则会加载环境变量。

有没有办法在创建 shell 时自动加载变量?

我正在使用 direnv 2.20.1 运行 MacOS Mojave (10.14.4),使用 bash 作为我的 shell。我正在通过我的.bashrc.

macos bash environment-variables terminal.app direnv

4
推荐指数
3
解决办法
2548
查看次数

无法使用 direnv 覆盖 PS1

我正在关注PS1 上的 direnv wiki。我的文件中有以下相关条目。

.bashrc

DEFAULT_PS1='\[$(ppwd)\]\u@\h:\w$(__git_ps1 " (%s)")'
# add some more things to DEFAULT_PS1, conditionally
DEFAULT_PS1+='> '

PS1=${CUSTOM_PS1:-$DEFAULT_PS1}

# optional bashrc file extensions
for f in ~/.bashrc_*; do test -s $f && . $f || true; done

eval "$(direnv hook bash)"
Run Code Online (Sandbox Code Playgroud)

.envrc

export KUBECONFIG=~/.config/kube/homelab.yaml
export KUBE_PS1_ENABLED=on
export CUSTOM_PS1='$(kube_ps1) $ '
PATH_add scripts
Run Code Online (Sandbox Code Playgroud)

我已允许使用最新版本的.envrcwith direnv allow。但是,当更改到目录时,未设置自定义 PS1 值,尽管这些值似乎是正确的

$ cd -
/home/robert/sources/oss/sling-cloud-native
direnv: loading .envrc
direnv: export +CUSTOM_PS1 +KUBE_PS1_ENABLED ~KUBECONFIG ~PATH

$ echo $PS1
\[$(ppwd)\]\u@\h:\w$(__git_ps1 …
Run Code Online (Sandbox Code Playgroud)

direnv

4
推荐指数
1
解决办法
1968
查看次数

Direnv不允许我允许

我已经使用以下命令将 direnv (v2.18.2) 安装到我的 Ubuntu 16.04 计算机上:

sudo snap install direnv

根据网站,并添加了以下行:

eval "$(direnv hook bash)"

~/.bashrc按照说明到我的文件。当我导航到包含.envrc文件的目录时,显示以下消息:

direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

甜的。所以我运行direnv allow,我立即遇到了完全相同的错误。我也尝试过使用direnv allow .,但这似乎没有帮助。另外,完全重新启动我的笔记本电脑也没有帮助。

我看到的所有建议都是 direnv 找不到该.envrc文件,但在这里它找到了它,它只是不允许我允许它。

direnv

4
推荐指数
1
解决办法
1万
查看次数

为什么我不再能够在macOS上更改环境变量$ USERNAME?

我想做的事

$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
newvalue
Run Code Online (Sandbox Code Playgroud)

怎么了

$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
myusername
Run Code Online (Sandbox Code Playgroud)

我尝试过的

  • 我尝试使用:sudo...;
  • 我尝试使用:unset USERNAME

有用的笔记

发布之前我做了什么

我能够使用direnvhttps://github.com/direnv/direnv)多次更改环境变量,并且一切运行良好。

我能够在中设置本地环境变量.envrc。然后,我遇到了这个问题...


https://unix.stackexchange.com/questions/483469/cannot-change-the-environment-variable

macos zsh environment-variables iterm2 direnv

3
推荐指数
1
解决办法
150
查看次数

使用 direnv 激活 virtualenv 不会激活 virtualenv

当我切换到目录时,我正在使用 direnv 来获取我的 virtualenv。

/project
   .envrc
   /env <--- my virtualenv
Run Code Online (Sandbox Code Playgroud)

.envrc

source env/bin/activate
Run Code Online (Sandbox Code Playgroud)

当我将目录更改为时,/project我得到输出:

direnv: loading .envrc
direnv: export +VIRTUAL_ENV -PS2 ~PATH
Run Code Online (Sandbox Code Playgroud)

它将 env 目录添加到我的 PATH 环境变量中,因此当我运行时which pythonwhich pip它们都指向我env目录中的python 和 pip

=> which python
/USER/project/env/bin/python
=> which pip
/USER/project/env/bin/pip
Run Code Online (Sandbox Code Playgroud)

但是它似乎并没有source env/bin/activate像我期望的那样运行。我希望它通过将 virtualenv 名称 (env) 添加到我的 CLI 提示符并授予对deactivate命令的访问权限来激活我的 virtualenv ,这两种情况都不会发生。我对 direnv 和 virtualenv 的工作方式有什么误解吗?我是 python 的新手,所以我不确定是否有现有的工具来做这样的事情。

python virtualenv direnv

2
推荐指数
2
解决办法
3883
查看次数

gcloud:是否可以根据当前文件夹更改默认项目?

我正在开发几个 gcloud 项目,我厌倦了--project XYZ每次需要调用命令时都必须输入,或者更糟糕的是,如果我忘记添加该命令,则命令会在错误的项目上执行。

bash config gcloud direnv

2
推荐指数
1
解决办法
595
查看次数

为什么 direnv 无法读取我的 zsh/fish/elvish/tcsh 脚本?

当尝试评估文件时,我在完全有效的///脚本中.envrc收到错误“ emulate: command not found”或“ cd: -q: invalid option”或任何数量的各种可能的错误。zshfishelivshtcsh

zsh tcsh fish direnv elvish

2
推荐指数
1
解决办法
1123
查看次数