С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
5 / 5 / 0
Регистрация: 16.04.2013
Сообщений: 59

py и pyc файлы

25.02.2021, 12:47. Показов 6035. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!!!
Работаю в одном приложении. В нем есть возможность, писать расширения функционала на Python-не
Создаешь файл типа - 'имя_скрипта.py', подключаешь к программе, ну и чего надо реализовываешь.

При отработке скрипта создавалась папка '__pycache__' в которой создавался файл 'имя_скрипта.cpython-37.pyc'. И потом, когда скрипт отработан, я убирал cpython-37 из имени файла c расширением pyc, и вместо исходника "подсовывал" этот файл и все прекрасно работало

Теперь, с выходом новой версии приложения, файл с расширением *.pyc перестал создаваться. Полазив по инету, нашел вот такой способ:
Python
1
2
import compileall
compileall.compile_dir(<DIR>, force=True)
файл с расширением *.pyc создается, но когда я его переименовываю(как описал выше) и "подсовываю" вместо исходника, не чего не работает.
Подскажите, где и чего надо поменять, что бы работало все как в прежних версиях? Или все это зависит от разработчика ПО и просто так файл pyc не подключишь?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.02.2021, 12:47
Ответы с готовыми решениями:

как декомпилировать в исходник файлы байткода .pyc.
Добрый день! Я скомпилировал свой проект с помощью pyinstaller, и случайно удалил исходный код, а он мне нужен. Что мне делать?

Компиляция в .pyc
Добрый день! я тоже не большой знаток питонов, но описаный выше способ опробовал файл рус. стал читаем в нотепаде++! изменил кое...

Компиляция в .pyc
Как исходник из .py файла скомпилировать в .pyc файл? Мой Python 3.2, по какой то причине, сам это не делает, почитал опции интерпретатора...

6
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
25.02.2021, 13:12
Не надейтесь на .pyc. Все подобные приложения работают с .py, это стандарт.
0
5 / 5 / 0
Регистрация: 16.04.2013
Сообщений: 59
09.03.2021, 12:17  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Не надейтесь на .pyc. Все подобные приложения работают с .py, это стандарт
Теперь у меня обратная задача. Есть файл pyc надо из него получить py для Python 2.5. Мое приложение использует эту версию питона
Полазив по инету узнал, что это можно сделать при помощи uncompyle6
На компе у меня стоит Pyton 3.6. При помощи pip3 установил uncompyle6. Конвертировал pyc, все прошло успешно. Но приложение при подключении py - выдает ошибку.
Так понимаю, формат у 2.5 и 3.6 разный.
Установил 2.5. По умолчанию pip-а в нем нет. Установил в ручную (через python install) - от куда скачал не помню
При установки через pip выдает следующую ошибку:
Кликните здесь для просмотра всего текста

C:\Python25\Scripts\pip-script.py run on 03/09/21 11:23:26
Requirement already satisfied (use --upgrade to upgrade): uncompyle6 in c:\python25\lib\site-packages\uncompyle6-3.7.4-py2.5.egg

Downloading/unpacking spark-parser>=1.8.9,<1.9.0 (from uncompyle6)

Getting page https://pypi.python.org/simple/spark-parser
Could not fetch URL https://pypi.python.org/simple/spark-parser: <urlopen error The connect operation timed out>
Will skip URL https://pypi.python.org/simple/spark-parser when looking for download links for spark-parser>=1.8.9,<1.9.0 (from uncompyle6)
Getting page https://pypi.python.org/simple/
Could not fetch URL https://pypi.python.org/simple/: <urlopen error The connect operation timed out>
Will skip URL https://pypi.python.org/simple/ when looking for download links for spark-parser>=1.8.9,<1.9.0 (from uncompyle6)
Cannot fetch index base URL https://pypi.python.org/simple/

URLs to search for versions for spark-parser>=1.8.9,<1.9.0 (from uncompyle6):
* https://pypi.python.org/simple/spark-parser/
Getting page https://pypi.python.org/simple/spark-parser/
Could not fetch URL https://pypi.python.org/simple/spark-parser/: <urlopen error The connect operation timed out>
Will skip URL https://pypi.python.org/simple/spark-parser/ when looking for download links for spark-parser>=1.8.9,<1.9.0 (from uncompyle6)
Could not find any downloads that satisfy the requirement spark-parser>=1.8.9,<1.9.0 (from uncompyle6)

No distributions at all found for spark-parser>=1.8.9,<1.9.0 (from uncompyle6)

Exception information:
Traceback (most recent call last):
File "c:\python25\lib\site-packages\pip-1.2-py2.5.egg\pip\basecommand.py", line 106, in main
status = self.run(options, args)
File "C:\Python25\lib\site-packages\pip-1.2-py2.5.egg\pip\commands\install.py", line 256, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "c:\python25\lib\site-packages\pip-1.2-py2.5.egg\pip\req.py", line 1011, in prepare_files
url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "c:\python25\lib\site-packages\pip-1.2-py2.5.egg\pip\index.py", line 157, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for spark-parser>=1.8.9,<1.9.0 (from uncompyle6)


Нашел uncompyle6 тут

при установки через install выдает следующую ошибку(текст ошибки в приложенном файле error.rar)

Помогите, в чем проблема?.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
09.03.2021, 13:00
Alllexx4, вообще, декомпилить .pyc - это кагбэ грязнохак. Так что, сдаётся мне, вы идёте неправильным путём.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
09.03.2021, 14:03
Alllexx4, Файл .pyc содержит байт-код основного кода. Этот файл создается только при первом запуске файла .py , или перезаписывается после редактирования кода. Байт код это не компиляция в машинные коды, как например у С++ , а преобразование кода в более компактный код питона, что бы интерпретатор работал немного быстрее.
Вот все что есть на эту тему у Лутца (соответствует питону версии 3.3):
Кликните здесь для просмотра всего текста
"
f.pyc

f - имя файла без расширения

pyc - расширение файла

uncompyle6 (это самый новый - для всех версий Python). Но просто текст он не декомпилирует - только файлы типа .pyc\.pyo

В Python 3.2 и последующих версиях файлы байт-кода .рус сохраняются в подкаталоге по имени__pycache__, расположенном в каталоге, где находятся файлы исходного кода, и их имена идентифицируют версию Python, в которой они создавались (скажем, script.cpython-ЗЗ.рус). Новый подкаталог__ pycache__ помогает избежать беспорядка, а новое соглашение об именовании файлов байт-кода предотвращает переписывание сохраненного байт-кода разными версиями Python, которые могут быть установлены на одном компьютере.

Если интерпретатор Python на вашем компьютере обладает правом записи, он будет сохранять байт-код вашей программы в виде файла с расширением .pyc (.pyc – это компилированный исходный файл .py). Вы будете обнаруживать эти файлы после запуска программ по соседству с файлами, содержащими исходные тексты (то есть в том же каталоге). Интерпретатор сохраняет байт-код для ускорения запуска программ. В следующий раз, когда вы попробуете запустить свою программу, Python загрузит файл .pyc и минует этап компиляции – при условии, что исходный текст программы не изменялся с момента последней компиляции. Чтобы определить, необходимо ли выполнять перекомпиляцию, Python автоматически сравнит время последнего изменения файла с исходным текстом и файла с байт-кодом. Если исходный текст сохранялся на диск после компиляции, при следующем его запуске интерпретатор автоматически выполнит повторную компиляцию программы. Если интерпретатор окажется не в состоянии записать файл с байт-кодом на диск, программа от этого не пострадает, просто байт-код будет сгенерирован в памяти и исчезнет по завершении программы.*1 Однако поскольку файлы .pyc повышают скорость запуска программы, вам может потребоваться иметь возможность сохранять их, особенно для больших программ. Кроме того, файлы с байт-кодом – это еще один из способов распространения программ на языке Python. Интерпретатор запустит файл .pyc, даже если нет оригинальных файлов с исходными текстами.

*1 - Строго говоря, байт-код сохраняется только для импортируемых файлов, но не для файла самой программы. Об импорте мы поговорим в главе 3 и снова вернемся к нему в части V. Байт-код также никогда не сохраняется для инструкций, введенных в интерактивном режиме, который описывается в главе 3.

Байт-код не является двоичным машинным кодом (например, инструкциями для микропроцессора Intel). Байткод – это внутреннее представление программ на языке Python. По этой причине программный код на языке Python не может выполняться так же быстро, как программный код на языке C или C++, о чем уже говорилось в главе 1. Обход инструкций выполняет виртуальная машина, а не микропроцессор, и чтобы выполнить байт-код, необходима дополнительная интерпретация, инструкции которого требуют на выполнение больше времени, чем машинные инструкции микропроцессора. С другой стороны, в отличие от классических интерпретаторов, здесь присутствует дополнительный этап компиляции – интерпретатору не требуется всякий раз снова и снова анализировать инструкции исходного текста. В результате Python способен обеспечить скорость выполнения где-то между традиционными компилирующими и традиционными интерпретирующими языками программирования."

От себя добавлю.
У меня раньше создавалась папка __pycache__ и в ней файл .pyc . После установки питона 3.8 эта папка и этот файл перестали создаваться. Но у меня теперь создается папка .vs и еще вложенные папки (я думаю ее создает Microsoft Visual Studio Community 2019 может она же подавляет файл .pyc и подсовывает свой, не знаю) и в ней файл .suo
Как написано выше, файл .pyc должен запускаться и нормально работать. Если не удастся восстановить исходник, то проанализируйте, что делает этот файл, и попытайтесь с нуля написать код файла .py самостоятельно.
Если же у Вас не запускается файл .pyc , то это значит, что он поврежден.
0
5 / 5 / 0
Регистрация: 16.04.2013
Сообщений: 59
09.03.2021, 16:21  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Так что, сдаётся мне, вы идёте неправильным путём.

Получается так:
1. Есть первые версии CAD системы, выпушенные лет 12 назад (когда в ходу был Python 2.5). В этих версиях есть питоновские файлы и они все имеют расширение pyc.
Пару версий было так.
2. Потом выпустили версии, где появилась папка __pycache__ с pyc файлами. Но появились и файлы py. В этих файлах я мог кой чего добавлять своего, и все работало.
3. В Последней версии этой CAD системы пропали файлы pyc, и все строится на файлах py. Я так понимаю на вопрос ответил Viktorrus, так так последние версии работают с питоном 3.8

Со вторым и третьим пунктами все понятно
Вернемся к первому. Если мне хочется добавить кой чего своего, мне нужен исходник с расширением py. Его нет. Копирование исходника из поздних версий и декомпиляция вызывает следующую ошибку:
The DLL for the controller 'Python' has an old version.
Please register a current version.

От сюда я сделал вывод, что не подходит формат py файла. В первом случаи я скопировал этот файл с более поздней версии, которая поддерживает python 3.0. А декомпиляцию я делал uncompyle6, который установлен на версии python-а 3.6. На 2.5 мне uncompyle6 поставить не удалось.

Направьте на истинный путь. Буду благодарен.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 6
09.03.2021, 17:12
Цитата Сообщение от Alllexx4 Посмотреть сообщение
Его нет. Копирование исходника из
То есть, вы пытаетесь под 2.5 запустить код под 3-й? Ну, если там нет python-3only feactures, то должен запуститься. Но 1. возникает вопрос, зачем вам что-то запускать на таком старье и 2. если есть python3-only features, надо будет адаптировать.

В общем, вы сами видите, что использование .pyc-файлов - это bad, и разработчики системы это поняли и перешли на .py. Вы явно идёте против течения.

Цитата Сообщение от Alllexx4 Посмотреть сообщение
декомпиляция вызывает следующую ошибку:
The DLL for the controller 'Python' has an old version.
Декомпиляция чего? Речь же про исходник на .py, так?
А насчёт dll-ки уже интереснее, надо бы разобраться, что за она.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2021, 17:12
Помогаю со студенческими работами здесь

Как декомпилировать .pyc?
Как декомпилировать .pyc? В интернете висит куча инструкций, но на таджикском. Какие-то скрипты, параметры, хрень какая-то в общем! ...

Редактирование файлов .pyc
Приветы! Столкнулся с зашифрованными файлами .pyc, нужно их редактировать а навыков ноль. Помогите разобраться как к ним подойти, что бы...

Редактирование файла .pyc
Добрый день! Подскажите, как мне отредактировать файл .pyc? Спасибо :) Добавлено через 4 минуты А, все, разобрался) Спасибо)

Просмотреть функции в *pyc
У меня есть питоновский файл *pyc. Требуется просмотреть функции или классы данного файла! Как это можно сделать через Python Shell?...

Не создаётся файл .pyc
На сколько мне извесно, после выполнения файла .py, должен создаваться файл .pyc с байт-кодом, а такового файла не появляется. Хотелось бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru