2015-05-12 4 views
2

Я пытаюсь сделать преобразования XSL-FO в PDF следуя this учебника, но для этого мне нужно запустить команду, которая использует переменную среды с именем FOP_CMD:Python не признает переменное окружение

doc = Document(tfactory('/home/username/Downloads/file.fo')) 
doc.generate(params, oformat='pdf') 

I сохранил переменную окружения в файле ~/etc/environment, и если я запустил echo $FOP_CMD в терминале, это даст мне правильный путь: /home/username/fop-1.1.

Однако, при запуске приложения, компилятор говорит мне следующее: Exception: Unable to find the path to execute FOP.Check the environment variable "FOP_CMD"

Странная вещь, что в Windows, я могу выполнить команду без каких-либо проблем и envirnment переменных указывает на тот же путь, но в Ubuntu этот эррос появляется.

Я также попытался изменить путь к /home/username/fop-1.1/fop (следуя рекомендациям, указанным в сообщении this), но он продолжает давать ту же ошибку.

Кто-нибудь знает, что я могу делать неправильно?

+1

Вы можете попытаться получить питон напечатать переменную 'FOP_CMD', чтобы помочь сузить проблему. Вам нужно добавить 'import os', а затем' print (os.environ ['FOP_CMD'] '. См. [Os.environ] (https://docs.python.org/2/library/os.html#os. окружать) –

+0

Weird ... это дает мне эту ошибку:. 'Traceback (самый последний вызов последнего): Файл "main.py", строка 10, в печати (os.environ [ 'FOP_CMD']) Файл «/usr/lib/python2.7/UserDict.py», строка 23, в __getitem__ raise KeyError (key) KeyError: 'FOP_CMD'' Но если я попытаюсь напечатать путь PATH, он отпечатает его в порядке. вы знаете, что может быть причиной этой ошибки? – undisp

+1

Хорошо, что 'KeyError' указывает, что у Python нет записи вашей переменной' FOP_CMD'. Можете ли вы попробовать явно указать переменную при запуске команды следующим образом: 'FOP_CMD = "/home/username/fop-1.1" yoursc ript.py'> –

ответ

2

Попробуйте установить переменные окружения внутри вашей программы на Python, как так:

import os 

if not 'FOP_CMD' in os.environ: 
    os.environ['FOP_CMD'] = '/home/username/fop-1.1' 
+0

Это сработало отлично. Благодарю. – undisp

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