2014-04-14 3 views
1

С gnuplot мне нужно установить export GDFONTPATH=${HOME}/fonts для отображения правильного шрифта. Или у меня есть это предупреждающее сообщение «Не удалось найти/открыть шрифт при открытии шрифта« arial », используя внутренний немасштабируемый шрифт».Применение переменной среды с подпроцессом.Popen

С Python я пытаюсь автоматизировать вызов gnuplot с помощью этого кода.

GNUPLOT=distutils.spawn.find_executable('gnuplot')   
my_env = os.environ 
my_env["GDFONTPATH"] = '${HOME}/fonts' 
p = Popen([GNUPLOT, config["file_path"]], shell=False, env=my_env) 
p.communicate() 

Однако у меня есть предупреждающее сообщение. Что может быть неправильным? Как применить переменную окружения в Python?

Could not find/open font when opening font "arial", using internal non-scalable font 

ответ

2

У меня возникла проблема с тем, что вы используете '$ {HOME}' напрямую. Попробуйте вместо этого:

my_env['GDFONTPATH'] = os.path.join(my_env['HOME'], 'fonts') 
+2

или 'os.path.expanduser ('~/шрифты')' – jfs

1

Позволь мне предложить несколько другое решение:

pngcairo терминала, который, кстати, дает гораздо лучшие результаты, чем png терминала, и другие каиры терминалы (wxt и pdfcairo) использование fontconfig.

При этом, вы должны создать только файл ~/.fonts.conf с содержанием:

<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"> 
<fontconfig> 
<dir>~/fonts</dir> 
</fontconfig> 

и вот это. (Возможно, вы должны проверить доступные имена шрифтов, например, fc-list | grep $HOME/fonts, но обычно имена файлов шрифтов не требуют пояснений). Затем используют, например,

set terminal pngcairo font 'DroidSerif' 

(испытано здесь с Gnuplot 4.6.4)

Смежные вопросы