How to access shell variable in ipython

自闭症网瘾萝莉.ら 提交于 2019-12-14 02:25:18

问题


Using the ! magic I can access env type environment variables, but not ones defined in my terminal, or .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]:

回答1:


if your variables are not exported, no subprocess can access them, python or not.

foo=value

is only seen by the current process (here: bash)

but if you do (in your .bashrc):

export foo

or set & export:

export foo=value

then the variable becomes visible by subprocesses. That's your fix.

BTW, to get an env. variable in python, the real python way is:

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


来源:https://stackoverflow.com/questions/40728731/how-to-access-shell-variable-in-ipython

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!