使用subprocess.Popen应用环境变量

时间:2014-04-14 20:01:10

标签: python subprocess gnuplot popen

使用gnuplot,我需要设置export GDFONTPATH=${HOME}/fonts以显示正确的字体。或者,我有这条警告消息“打开字体时无法找到/打开字体”arial“,使用内部不可缩放的字体”。

使用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 个答案:

答案 0 :(得分:2)

我感觉到您正在使用的问题' $ {HOME}'直。试试这个:

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

答案 1 :(得分:1)

让我提出一个稍微不同的解决方案:

pngcairo终端,其结果比png终端产生更好的结果,其他cairo终端(wxtpdfcairo)使用{{3 }}

这样,您只能创建一个包含内容的文件~/.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进行测试)