如何访问 ipython 中的 shell 变量

How to access shell variable in ipython

使用 ! 魔法我可以访问 env 类型的环境变量,但不能访问我的终端中定义的环境变量,或者 .bashrc.

$:/<path>/balter/chip-seq-analysis/chipseq$ echo $hg38
/<path>/genomes/hg38/release-85/Homo_sapiens.GRCh38.dna.primary_assembly.fa
balter@exalab3:/<path>/balter/chip-seq-analysis/chipseq$ ipython
Python 2.7.12 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:42:40)
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: !echo $hg38


In [2]: !echo $SHELL
/usr/bin/bash

In [3]:

如果您的变量未被 export 编辑,则任何子进程都无法访问它们,python 与否。

foo=value

只能被当前进程看到(此处:bash

但如果你这样做(在你的 .bashrc 中):

export foo

或设置并导出:

export foo=value

然后变量对子进程可见。这就是你的解决办法。

顺便说一句,获得一个环境。 python 中的变量,真正的 python 方式是:

import os
print(os.getenv("foo"))