- PVSM.RU - https://www.pvsm.ru -
Это перевод вчерашней заметки [1] от Simon Willison [2]
Я облажался, бездумно используя git (git checkout --
— не на том файле) и умудрился удалить код, который я только что написал… но он все еще был загружен в исполняемый процесс в докер-контейнере. Вот, как я восстановил код, используя https://pypi.python.org/pypi/pyrasite/ [3] и https://pypi.python.org/pypi/uncompyle6 [4]
GDB
(это требует pyrasite
)apt-get update && apt-get install gdb
pyrasite
— это позволит подключить питоновкий шелл к запущенному процессуpip install pyrasite
uncompyle6
, это позволит декомпилировать объекты в памяти обратно в питоновский кодpip install uncompyle6
PID
процесса, который исполняет ваш кодps aux | grep python
pyrasite
pyrasite-shell <PID>
>>> from my_package import my_module
>>> dir(my_module)
['MyClass', 'my_function']
>>> import uncompyle6
>>> import sys
>>> uncompyle6.main.uncompyle(
2.7, my_module.my_function.func_code, sys.stdout
)
# uncompyle6 version 2.9.10
# Python bytecode 2.7
# Decompiled from: Python 2.7.12 (default, Nov 19 2016, 06:48:10)
# [GCC 5.4.0 20160609]
# Embedded file name: /srv/my_package/my_module.py
function_body = "appears here"
>>> uncompyle6.main.uncompyle(
2.7, my_module.MyClass.my_method.im_func.func_code, sys.stdout
)
# uncompyle6 version 2.9.10
# Python bytecode 2.7
# Decompiled from: Python 2.7.12 (default, Nov 19 2016, 06:48:10)
# [GCC 5.4.0 20160609]
# Embedded file name: /srv/my_package/my_module.py
class_method_body = "appears here"
Вот он, ваш было почти утерянный код.
Автор: am-amotion-city
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/249112
Ссылки в тексте:
[1] перевод вчерашней заметки: https://gist.github.com/simonw/8aa492e59265c1a021f5c5618f9e6b12
[2] Simon Willison: https://gist.github.com/simonw
[3] https://pypi.python.org/pypi/pyrasite/: https://pypi.python.org/pypi/pyrasite/
[4] https://pypi.python.org/pypi/uncompyle6: https://pypi.python.org/pypi/uncompyle6
[5] Источник: https://habrahabr.ru/post/323726/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.