每次我尝试在项目中安装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) 想象一下,我在一个 shell 中,工作目录设置为一个包含.envrc文件的目录。当我现在在终端模拟器中打开一个新选项卡时,一个新的 shell 会启动到与原始 shell 相同的工作目录中。
出于某种原因,该.envrc文件未加载到这个新 shell 中。如果手动退出工作目录并再次进入,则会加载环境变量。
有没有办法在创建 shell 时自动加载变量?
我正在使用 direnv 2.20.1 运行 MacOS Mojave (10.14.4),使用 bash 作为我的 shell。我正在通过我的.bashrc.
我正在关注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 (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文件,但在这里它找到了它,它只是不允许我允许它。
我想做的事
$ 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。有用的笔记
操作系统:macOS Mojave 10.14
Direnv:https://github.com/direnv/direnv
我在用 zsh
发布之前我做了什么
我能够使用direnv(https://github.com/direnv/direnv)多次更改环境变量,并且一切运行良好。
我能够在中设置本地环境变量.envrc。然后,我遇到了这个问题...
解
https://unix.stackexchange.com/questions/483469/cannot-change-the-environment-variable
当我切换到目录时,我正在使用 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 python,which 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 的新手,所以我不确定是否有现有的工具来做这样的事情。
我正在开发几个 gcloud 项目,我厌倦了--project XYZ每次需要调用命令时都必须输入,或者更糟糕的是,如果我忘记添加该命令,则命令会在错误的项目上执行。
当尝试评估文件时,我在完全有效的///脚本中.envrc收到错误“ emulate: command not found”或“ cd: -q: invalid option”或任何数量的各种可能的错误。zshfishelivshtcsh