2016-11-21 5 views
0

Используя магию !, я могу получить доступ к переменным окружения типа env, но не определенным в моем терминале, или .bashrc.Как получить доступ к переменной оболочки в ipython

$:/<path>/balter/chip-seq-analysis/chipseq$ echo $hg38 
/<path>/genomes/hg38/release-85/Homo_sapiens.GRCh38.dna.primary_assembly.fa 
[email protected]:/<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

Если ваши переменные не являются _exported_, ни один из подпроцессов не может получить к ним доступ, pyhton или нет. –

+0

Итак, в моем '.bashrc' мне нужно экспортировать hg38 = ....' с экспортом? Я попробую. – abalter

+1

да, это необходимо! –

ответ

1

, если ваши переменные не export Е.Д., не подпроцесс не может получить доступ к ним, питона или нет.

foo=value 

рассматривается только текущим процессом (здесь: bash)

, но если вы делаете (в вашем .bashrc):

export foo 

или установить & экспорт:

export foo=value 

, тогда переменная становится видимой подпроцессами. Это ваше решение.

BTW, чтобы получить env. переменная в python, реальный путь python:

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