gpt4 book ai didi

jupyter-notebook - 在 IPython 中混合 shell 变量和 python 变量 '!command'

转载 作者:行者123 更新时间:2023-12-03 08:07:57 28 4
gpt4 key购买 nike

试图弄清楚 IPython(v7.12.0,Amazon SageMaker)上的这种行为是否是一个错误,或者我缺少一些正确的方法/记录的约束...

假设我有一些 Python 变量,例如:

NODE_VER = "v16.14.2"
NODE_DISTRO = "linux-x64"

这些命令在笔记本中都可以正常工作:

!echo $PATH
# Shows **contents of system path**
!echo /usr/local/lib/nodejs/node-{NODE_VER}-{NODE_DISTRO}/bin:
# Shows /usr/local/lib/nodejs/node-v16.14.2-linux-x64/bin

...但这并不:

!echo /usr/local/lib/nodejs/node-{NODE_VER}-{NODE_DISTRO}/bin:$PATH
# Shows:
# /usr/local/lib/nodejs/node-{NODE_VER}-{NODE_DISTRO}/bin:**contents of system path**

我尝试了几种组合,例如使用 $NODE_VER 语法(它生成 node--/ 而不是 node-{NODE_VER}-{NODE_DISTRO}/,但似乎任何使用 shell 变量 (PATH) 和 Python 变量 (NODE_VER/NODE_DISTRO) 的组合失败。

任何人都可以帮助我理解为什么以及如何解决这个问题吗?

正如您可能已经猜到的那样,我的最终目标是实际将此文件夹添加到 PATH 而不是仅仅回显它 - 类似于:

!export PATH=/usr/local/lib/nodejs/node-{NODE_VER}-{NODE_DISTRO}/bin:$PATH

最佳答案

How to reference both a python and environment variable in jupyter bash magic?

尝试

!echo /usr/local/lib/nodejs/node-{NODE_VER}-{NODE_DISTRO}/bin:$$PATH

$$PATH 强制它使用系统变量,而不是尝试查找 Python/本地变量。

各种示例:

In [130]: foo = 'foo*.txt'
In [131]: HOME = 'myvar'
In [132]: !echo $foo
foo1.txt foobar0.txt foobar2.txt foobar3.txt foo.txt
In [133]: !echo $foo $HOME
foo1.txt foobar0.txt foobar2.txt foobar3.txt foo.txt myvar
In [134]: !echo $foo $$HOME
foo1.txt foobar0.txt foobar2.txt foobar3.txt foo.txt /home/paul
In [135]: !echo $foo $PWD
/home/paul/mypy
In [136]: !echo $foo $$PWD
foo1.txt foobar0.txt foobar2.txt foobar3.txt foo.txt /home/paul/mypy
In [137]: !echo {foo} $PWD
{foo} /home/paul/mypy
In [138]: !echo {foo} $$PWD
foo1.txt foobar0.txt foobar2.txt foobar3.txt foo.txt /home/paul/mypy

任何非本地定义的变量都会强制您看到的行为:

In [139]: !echo $abc

In [140]: !echo {foo} $abc
{foo}

它可能会将替换放在 try/except block 中,并在出现任何 NameError 时“放弃”。

这种替换可以发生在大多数魔法中,而不仅仅是!

关于jupyter-notebook - 在 IPython 中混合 shell 变量和 python 变量 '!command',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71611419/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com