Latest posts on *.pyc, *.pyo topichttp://python.su/forum/topic/904/2007-12-07T22:02:19+02:00Общий :: Python для экспертов :: *.pyc, *.pyo
2007-12-07T22:02:19+02:00bialix9595<blockquote><em>Mr.Floppy</em><br/><strong>bialix</strong>, а можно “откомпилировать” сам скрипт? Например, чтобы не показывать исходник?</blockquote>можно, но питоновский байт-код декомпилируется на раз-два по многочисленным утверждениям опытных товарищей. так что как написано в книге Core Python Programming для особо секретных частей писать сишные (или Pyrex-ные – это от меня совет) расширения. А сам главный скрипт пистатьчто-то вроде:<br/><br/><br/>from mylib import main<br/>main()<br/><br/><br/>тогда бояться показывать исходник не придется :-)
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-12-07T20:52:14+02:00Mr.Floppy9592<strong>bialix</strong>, а можно “откомпилировать” сам скрипт? Например, чтобы не показывать исходник?
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-12-07T06:17:26+02:00slivlen9577<blockquote><em>Murr_vk</em><br/>Я так понимаю - это некий байт-код для питоновского интерпретатора, что-то вроде .msi в .NET.</blockquote>Думаю, ты имел ввиду MSIL (Microsoft Intermediate Language), а не .msi?
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-12-07T00:32:28+02:00bialix9575<blockquote><em>AndreyKS</em><br/><blockquote><em>bialix</em><br/><blockquote><em>Андрей Светлов</em><br/>pyc/pyo - только байткод. pyo - с оптимизацией (реально ничего не дает, только докстринги режутся, как я помню. Интрерпретатору приходится так и так одинаково трудиться)</blockquote>Неправда. При выполнении pyo внутренняя переменная интерпретатора __debug__ устанавливается в 0.<br/>Эта переменная используется в операторе assert. Так что можно считать что в pyo отсутствуют assert.<br/><br/>pyo получаются при запуске python -O или python -OO. Но! Докстринги режутся только при выполнении python -OO. Поэтому pyo может содержать, а может и не содержать докстринги.</blockquote>Запускаю python -OO file | python -O file но pyc/pyo не появляются. Или их в другом месте появляются?</blockquote>pyc/pyo файлы создаются только для импортируемых модулей/библиотек и никогда для выполняемого скрипта.
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-12-06T23:43:13+02:00AndreyKS9574<blockquote><em>bialix</em><br/><blockquote><em>Андрей Светлов</em><br/>pyc/pyo - только байткод. pyo - с оптимизацией (реально ничего не дает, только докстринги режутся, как я помню. Интрерпретатору приходится так и так одинаково трудиться)</blockquote>Неправда. При выполнении pyo внутренняя переменная интерпретатора __debug__ устанавливается в 0.<br/>Эта переменная используется в операторе assert. Так что можно считать что в pyo отсутствуют assert.<br/><br/>pyo получаются при запуске python -O или python -OO. Но! Докстринги режутся только при выполнении python -OO. Поэтому pyo может содержать, а может и не содержать докстринги.</blockquote>Запускаю python -OO file | python -O file но pyc/pyo не появляются. Или их в другом месте появляются?
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-06-20T16:26:57+03:00Андрей Светлов5962Да, точно. Но на скорость исполнения это практически не влияет. Другое дело, если o2 в С++ компиляторе включишь!
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-06-20T16:21:01+03:00bialix5960<blockquote><em>Андрей Светлов</em><br/>pyc/pyo - только байткод. pyo - с оптимизацией (реально ничего не дает, только докстринги режутся, как я помню. Интрерпретатору приходится так и так одинаково трудиться)</blockquote>Неправда. При выполнении pyo внутренняя переменная интерпретатора __debug__ устанавливается в 0.<br/>Эта переменная используется в операторе assert. Так что можно считать что в pyo отсутствуют assert.<br/><br/>pyo получаются при запуске python -O или python -OO. Но! Докстринги режутся только при выполнении python -OO. Поэтому pyo может содержать, а может и не содержать докстринги.
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-06-20T14:40:39+03:00tabajara5947<a href="http://crchemist.wmn.cc/?p=9">http://crchemist.wmn.cc/?p=9</a><br/><a href="http://crchemist.wmn.cc/?p=11">http://crchemist.wmn.cc/?p=11</a><br/><a href="http://crchemist.wmn.cc/?p=12">http://crchemist.wmn.cc/?p=12</a>
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-06-20T01:53:04+03:00Андрей Светлов5933начнем с того, что msi - это инсталлятор, в первую голову. Из аналогов в Питоне - egg. Хоть и структура/способы работы с ним далеко не так кошмарны, как с msi.<br/>pyc/pyo - только байткод. pyo - с оптимизацией (реально ничего не дает, только докстринги режутся, как я помню. Интрерпретатору приходится так и так одинаково трудиться)<br/>Когда импортим модуль - получаем объект. Если его пропустить через стандартный marshal и прибавить в начале магический код (константа, определяющая тип файла) - получим pyc. Может я что-то и забыл, но это, ИМХО, несущественно. По крайней мере в работе никогда не понадобилось.<br/>Где-то видел (возможно, даже сдесь) более подробное описание со ссылками на исходники Питона.
Общий :: Python для экспертов :: *.pyc, *.pyo
2007-06-19T23:36:07+03:00Murr_vk5932Стало интересно, что это за файлы. Я так понимаю - это некий байт-код для питоновского интерпретатора, что-то вроде .msi в .NET. А не знает ли кто, где можно почитать про анотомию этих файлов, формат, каким образом получается этот самый байт-код. Или это секрет разработчиков интерпретатора?<br/><br/>В общем если у кого есть что-нибудь интересное по данной теме - поделитесь плиз или дайте ссылку. Заранее всем спасибо :)