Как страшно жить или Рукожопые Питонасты
Вырывать руки за такую обработку ошибок. С корнями из жопы вырывать:
Welcome to GNU Radio Companion 3.6.0
Error: 'options'
>>> Failure
Traceback (most recent call last):
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\gui\MainWindow.py", line 171, in new_page
flow_graph = self._platform.get_new_flow_graph()
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\Platform.py", line 148, in get_new_flow_graph
def get_new_flow_graph(self): return self.FlowGraph(platform=self)
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\python\FlowGraph.py", line 31, in __init__
_FlowGraph.__init__(self, **kwargs)
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\FlowGraph.py", line 35, in __init__
self.import_data()
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\FlowGraph.py", line 176, in import_data
self._options_block = self.get_parent().get_new_block(self, 'options')
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\Platform.py", line 158, in get_new_block
def get_new_block(self, flow_graph, key): return self.Block(flow_graph, n=self._blocks_n[key])
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\odict.py", line 34, in __getitem__
return self._data[key]
KeyError: 'options'
Error: 'options'
Вы думаете, как ошибка с таким высокодуховным и легкочитаемым сообщением лечится? А вот так:
set GRC_BLOCKS_PATH=D:\programm\gnuradio\share\gnuradio\grc\blocks
Метапрограммирование во все поля. Ключ 'options' - это ссылка на файл лежащий по вышеуказанному пути, с расширением xml, но вместо того, чтобы показать ошибку "файл не найден" "ошибка пути" или "проверьте переменные окружения", оно валится с KeyError.
Нашел сравнением окружения процесса python.exe на машине где "все работает" и где "не работает".
Причем там где не работает - из программы даже выйти нельзя. Потому что падает оно в конструкторе формы и она остается недоделанной. По моему, это рукожопие чудовищное.
Welcome to GNU Radio Companion 3.6.0
Error: 'options'
>>> Failure
Traceback (most recent call last):
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\gui\MainWindow.py", line 171, in new_page
flow_graph = self._platform.get_new_flow_graph()
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\Platform.py", line 148, in get_new_flow_graph
def get_new_flow_graph(self): return self.FlowGraph(platform=self)
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\python\FlowGraph.py", line 31, in __init__
_FlowGraph.__init__(self, **kwargs)
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\FlowGraph.py", line 35, in __init__
self.import_data()
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\FlowGraph.py", line 176, in import_data
self._options_block = self.get_parent().get_new_block(self, 'options')
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\Platform.py", line 158, in get_new_block
def get_new_block(self, flow_graph, key): return self.Block(flow_graph, n=self._blocks_n[key])
File "d:\programm\gnuradio\lib\site-packages\gnuradio\grc\base\odict.py", line 34, in __getitem__
return self._data[key]
KeyError: 'options'
Error: 'options'
Вы думаете, как ошибка с таким высокодуховным и легкочитаемым сообщением лечится? А вот так:
set GRC_BLOCKS_PATH=D:\programm\gnuradio\share\gnuradio\grc\blocks
Метапрограммирование во все поля. Ключ 'options' - это ссылка на файл лежащий по вышеуказанному пути, с расширением xml, но вместо того, чтобы показать ошибку "файл не найден" "ошибка пути" или "проверьте переменные окружения", оно валится с KeyError.
Нашел сравнением окружения процесса python.exe на машине где "все работает" и где "не работает".
Причем там где не работает - из программы даже выйти нельзя. Потому что падает оно в конструкторе формы и она остается недоделанной. По моему, это рукожопие чудовищное.
no subject
no subject
pyqt не знаю.
wxWidgets тоже рукожопие, по сведениям от пауков.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
А тот, кто писал форму, полагал, что для нормальной работы этот файл все равно нужен, поэтому при нормальной работе он все равно будет, а обрабатывать ненормальную ситуацию так лень, и что с нею делать, он тоже не придумал...
У меня недавно такой этап в хаскеле был. Когда, конечно, видно, что функция частичная, но вроде бы тут не должно быть пустого списка, а оборачивать в Maybe, а главное, потом разворачивать обратно или join'ить, так лень, и композиция сразу перестает работать... Кинуть исключение, конечно, можно, беда в том, что поймать _своевременно_ нельзя - дело происходит в чистом коде. Логгинг, опять же, неудобно делать, поэтому он не делается.
А потом вдруг оказывается, что контракт не выполняется, программа падает с заявлением Prelude.undefined, и ищи этот undefined... Ну ладно, слов undefined в ней немного, а вот !! хватает...
А с питоном тоже аналогично получается, когда к программке (суффикс "к" важен), которая изначально была сделана как запускаемая вручную, в процессе развития приделывается демонизация - а потом сиди и думай, то ли почта не ходит, то ли offlineimap рухнул. Потому как ручная программка может себе позволить неперехваченное исключение, его видно... Причем рухает он, ну, раз в два месяца, типа когда вдруг сетка в особо неудачный момент отвалилась.
no subject
no subject
no subject
А можно поподробней?
no subject
Основная разница оказалась именно в этой переменной окружения, а все остальные вариации, внезапно хардкодед так, что нигде кроме program files работать не будут.
no subject
no subject
С минимально вменяемыми программистами, т.е. если баги только в окружении (90% багов вида "не работает") - спасает более чем полностью.
no subject
no subject
В крайнем случае - я модифицирую перед запуском окружение, чтобы не изменять глобальное (мало ли что еще сломается).