Python — высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода.
Хочется отметить, что для меня Python является одним из самых интересных, мощных языков программирования. С ним я познакомился примерно в 2016 году и только спустя год осознал всю его мощь и красоту.
Многие задаются вопросом, когда написали программу на Python: “А как его скомпилировать в .exe файл?”. Вопрос довольно сложный, для того, кто только открыл для себя этот язык и ещё не сталкивался с pip.
pip – система управления пакетами, которая используется для установки и управления программными пакетами, которые написаны на Python. Если кратко, то pip – это файловый менеджер языка Python.
pyinstaller – программа, которая собирает все зависимости и python-приложение в один пакет и превращает его в исполняемый файл для Windows, Linux, MacOS.
Как скомпилировать Python код в .exe | практикум
Давайте разберем, как скомпилировать Python код в .exe за минуту, с помощью Терминала(в Linux) или cmd(Windows).
Для начала, нам нужно установить pyinstaller с помощью pip. Пишем команду в командной строке:
pip install pyinstaller
Если вы используете Linux и у вас не установлен pip, то просто напишите команду:
apt-get install python-pip
На Windows, если вы не изменяли конфигурации установки Python, проблемы отсутствия pip у вас возникнуть не должно.
Вторым шагом будет переход в директорию с нашим проектом. Просто копируем путь и с помощью команды cd (наш путь) переходим в директорию, для Linux и Windows команда одинаковая.
Теперь давайте скомпилируем наш Python код в .exe, не будем тянуть.
- Сделаем мы это с помощью установленного пакета pyinstaller.
- Пишем команду:
pyinstaller -F -w -i( to set up icon on your .exe) main.py
Давайте разберем каждый флаг, они не обязательно все вам понадобятся.
- -F – этот флаг отвечает за то, чтобы в созданной папке dist, в которой и будет храниться наш исполняемый файл не было очень много лишних файлов, модулей и т.п.
- -w – этот флаг вам понадобится в том случае, если приложение использует tkinekt, оно блокирует создание консольного окна, если же ваше приложение консольное, вам этот флаг использовать не нужно.
- -i – этот флаг отвечает за установку иконки на наш исполняемый файл, после флага нужно указать полный путь к иконке с указанием её имени. Например: D:LayOuticon.ico
Вот и всё, сегодня мы рассмотрели, как скомпилировать Python код в .exe, Если у вас остались какие-либо вопросы, пишите их в комментарии, с удовольствием отвечу.
Так же подписывайтесь на обновления сайта, тут будет ещё много интересного!
Удачи в жизни и до встречи!
Источник: https://www.make-info.com/kak-skompilirovat-python-kod-v-exe/
Как из файла Python3 создать .exe на Windows
Способ 1
Мы рассмотрим создание .exe с помощью библиотеки модуля py2exe. Для этого необходим Python 3.4 и ниже.
Если у вас установлена более высокая версия Python, попробуйте использовать Способ 2 (ниже)
Для Python2.х py2exe доступен по ссылке http://sourceforge.net/project/showfiles.php?group_id=15583.
В этом примере мы рассмотрим создание .exe на примере Python3.4.
Прежде всего на нужно создать виртуальное окружение для Python3.4. В этом примере мы назовем myenv, Вы можете выбрать любое другое имя, но не забывайте сделать соответствующие изменения.
На терминале наберите следующие команды:
>py -3.4 -m venv myenv
> myenvScriptsactivate.bat
В командной строке появится префикс myenv, а это значит, что виртуальное окружение с именем myenv загружено. Все команды Python теперь будет использовать новое виртуальное окружение.
Теперь давайте установим py2exe (https://pypi.python.org/pypi/py2exe~~HEAD=dobj) в нашем виртуальном окружении:
>pip install py2exe
И, наконец, чтобы создать единый EXE-файл, в нашем виртуальном окружении выполняем команду:
>python -m py2exe.build_exe hello.py -c —bundle-files 0
(замените hello.py на имя вашего скрипта. Если скрипт находится в другой папке, то нужно использовать полный путь к вашему сценарию, например, C:ProjectsPython hello.py). Это создаст папку DIST, которая содержит исполняемый файл. Для быстрого доступа к нему, наберите в терминале:
> explorer dist
Вы увидите путь к папке, где находится EXE-файл.
Примечание: При выполнении, откроется окно и исчезают так же быстро, как и появилось.
Это происходит потому, что операционная система автоматически закрывает терминал, в котором консольная программа закончена.
Для того, чтобы изменить эту ситуацию, можно добавить строчку
> input (» Нажмите для выхода … «)
в конце файла Python. Интерпретатор будет ждать ввода пользователя, а окно будет оставаться открытым, пока пользователь не нажимает клавишу ввода.
Вы можете подробно изучить использование py2exe в документации на странице модуля: https://pypi.python.org/pypi/py2exe
Выход из виртуального окружения производится командой
>deactivate
Способ 2
Через командную строку Windows устанавливаем pyinstaller:
>pip install pyinstaller
В командной строке переходим в папку, где находится файл
cd c:…
Затем в командной строке набираем команду
pyinstaller —onefile example.py
Вместо exapmle.py используем имя файла, из которого нужно создать exe файл.
Через пару минут все готово! Скоркее всего, exe файл будет находится во созданной подпапке dist
Источник: https://pylab.ru/how-to-create-exe-in-python/
What is pythonw.exe?
The genuine pythonw.exe file is a software component of Python by Python Software Foundation.
Pythonw.exe is an executable file that belongs to the Python, a high-level programming language which supports object-oriented, imperative and functional programming or procedural programming styles. This process runs graphical interface applications without launching a system shell. It also allows python to be run from the command prompt. This is not a critical Windows component and should be removed if known to cause problems.
Python was developed in the late 1980s by Guido van Rossum, a Dutch computer programmer. It was built around a core philosophy of being easy to read and implement. Python was first released in 1991 and was named after Monty Python. Python is currently developed and maintained by the Python Software Foundation, a non-profit organization launched on March 6, 2001.
Pythonw stands for Run Python without a terminal window
The .exe extension on a filename indicates an executable file. Executable files may, in some cases, harm your computer. Therefore, please read below to decide for yourself whether the pythonw.exe on your computer is a Trojan that you should remove, or whether it is a file belonging to the Windows operating system or to a trusted application.
Click to Run a Free Scan for pythonw.exe related errors
Pythonw.exe process in Windows Task Manager
The process known as Python or Python 2.7.3 or ActiveState ActivePython (version 2.7.1.3 (32-bit))
belongs to software Python or Python 3.5.2 Executables or Python 2.7 pywin32-217 or setupsk or ActiveState ActivePython or fiibkhokmfkkadmpaigijmgmlfenpchk or ShopMore
by Python Software Foundation (www.python.org) or ActiveState Software (www.activestate.com).
Description: Pythonw.exe is not essential for the Windows OS and causes relatively few problems. Pythonw.exe is located in a subfolder of the user's profile folder (for instance C:UsersUSERNAMEAppDataRoamingPBotpython or C:UsersUSERNAMEAppDataRoamingsetupskpython).
Known file sizes on Windows 10/8/7/XP are 27,648 bytes (58% of all occurrences), 27,136 bytes and 6 more variants.
The file is not a Windows core file. The software starts upon Windows startup (see Registry key: Run, User Shell Folders, TaskScheduler, MACHINERun, RunOnce).
The program has no file description. The program is not visible.
pythonw.exe appears to be a compressed file.
Therefore the technical security rating is 80% dangerous, but you should also take into account the user reviews.
Uninstalling this variant:
In the event of any problems with pythonw.exe, you might want to uninstall the software setupsk or PBot using the Uninstall a Program function of Windows Control Panel (Windows: Start, Settings, Control Panel, Uninstall a Program).
Recommended: Identify pythonw.exe related errors
- If pythonw.exe is located in a subfolder of «C:Program Files», the security rating is 78% dangerous. The file size is 27,648 bytes (47% of all occurrences), 27,136 bytes and 5 more variants.
Pythonw.exe is a file with no information about its developer. Pythonw.exe is not a Windows system file. The application is loaded during the Windows boot process (see Registry key: Run, User Shell Folders, TaskScheduler, MACHINERun, RunOnce).
The program is not visible.
pythonw.exe appears to be a compressed file.
Uninstalling this variant:
In the event of any problems with pythonw.exe, you might want to uninstall the software PBot or setupsk using the Uninstall a Program function of Windows Control Panel (Windows: Start, Settings, Control Panel, Uninstall a Program). - If pythonw.exe is located in a subfolder of C:, the security rating is 55% dangerous. The file size is 27,136 bytes (40% of all occurrences), 41,472 bytes, 27,648 bytes, 42,136 bytes or 20,527 bytes.
There is no information about the author of the file. The program has no visible window. It is not a Windows core file.
Uninstalling this variant:
In the event of any problems with pythonw.exe, you might want to uninstall the software Python or Python 2.7 pywin32-217 using the Uninstall a Program function of Windows Control Panel (Windows: Start, Settings, Control Panel, Uninstall a Program).
Important: Some malware camouflages itself as pythonw.exe. Therefore, you should check the pythonw.exe process on your PC to see if it is a threat. We recommend Security Task Manager for verifying your computer's security. This was one of the Top Download Picks of The Washington Post and PC World.
A clean and tidy computer is the key requirement for avoiding problems with pythonw.
This means running a scan for malware, cleaning your hard drive using 1cleanmgr and 2sfc /scannow, 3uninstalling programs that you no longer need, checking for Autostart programs (using 4msconfig) and enabling Windows' 5Automatic Update. Always remember to perform periodic backups, or at least to set restore points.
Should you experience an actual problem, try to recall the last thing you did, or the last thing you installed before the problem appeared for the first time. Use the 6resmon command to identify the processes that are causing your problem.
Even for serious problems, rather than reinstalling Windows, you are better off repairing of your installation or, for Windows 8 and later versions, executing the 7DISM.exe /Online /Cleanup-image /Restorehealth command.
This allows you to repair the operating system without losing data.
Источник: https://www.file.net/process/pythonw.exe.html
"Pythonw.exe" что за процесс и как с ним бороться?
Здравствуйте, дорогие читатели блога IT-Техник! Решил немного ближе подойти к теме процессов Windows, поскольку получаю от Вас много сообщений с подобными вопросами. Чаще всего они возникают, когда пользователь заглядывает в диспетчер задач и видит там непонятные пункты. Чтобы не удалить нужный элемент или распознать вирус, следует знать о них побольше. Сегодня расскажу о Pythonw exe что это такое и как с ним бороться.
Описание процесса
Уверен, Вы знаете, что приложения – это набор библиотек и файлов, написанных на определенном языке программирования. Их существует немало на сегодняшний день. К чему я веду? Pythonw.exe является модулем языка Python, точнее – его интерпретатором (преобразует код программы, написанной на Питоне в понятный для Windows).
Если в диспетчере задач Вы увидите такой элемент, значит на Вашем ПК есть утилиты, которые для работы используют указанный выше язык:
Опасно ли это? Совершенно нет. Но есть вероятность, что данный модуль запущен вредоносными скриптами. Они могут быть как относительно безобидными (показ рекламы), так и критическими для системы (повреждение и кража личных данных и файлов Виндовс). Вот здесь уже стоит задуматься.
Но как определить уровень угрозы? Зачастую, файл Pythonw.exe занимает на диске 27 648 или 27 136 байт. Если же размер его отличается от указанных показателей, вероятно Вы имеете дело с вирусным заражением. В первую очередь, рекомендую запустить антивирусную проверку (подойдет утилита Dr Web Cure It).
Удаляем файл
Если в процессе работы возникает ошибка «прекращена работа программы Pythonw exe» как исправить? Необходимо удалить указанный элемент, а при необходимости пользующиеся им приложения заново загрузят его из сети. Сейчас расскажу, как остановить процесс и выполнить удаление его источника.
- Открываем диспетчер задач любым из известных способов (вот перечень);
- Находим элемент, который необходимо устранить, выделяем его курсором мышки и ниже (справа) нажимаем «Остановить» или «Снять задачу».
- Несмотря на предупреждение, соглашаемся с действием.
- Открываем консоль выполнения запросов, нажав комбинацию Win + R и вводим:
- cmd
- sc delete pythonw.exe
- После нажатия на Enter, стартует процедура очистки. По завершению, можно закрывать консоль.
Уверен, что инструкция помогла Вам. Pythonw exe как удалить Вы знаете, но еще раз напомню, что после устранения он может снова восстановиться по требованию использующего его приложения. Если это вирус, то стоит обязательно запустить антивирусное сканирование. Попробуйте одну из утилит, представленных в данном списке.
На этом всё. Появятся вопросы – пишите в х.
С уважением, Виктор
07.02.2017 10:00 3665
Виктор Фельк
Информационный портал IT Техник
Источник: https://it-tehnik.ru/software/windows-10/pythonw-exe.html
Обзор процесса Pythonw.exe
Существует множество языков программирования, которые используются для написания разного рода приложений. Если не вдаваться в технические подробности, то для работы каждой программы нужны библиотеки с ресурсами и фреймворками того языка разработки, на котором был создан софт. Поэтому рассмотрим, что это за процесс Pythonw.exe и как его остановить.
Что такое Pythonw.exe?
Pythonw.exe (Run Python without a terminal window) – это интерпретатор для языка программирования Python. Если вы обнаружили данный процесс в Диспетчере задач – значит на машине работает приложение, использующее Python Software Foundation.
Сам по себе файл не представляет опасности, он просто выполняет инструкции и служит площадкой для выполнения кода. А вот скрипты и тулы, которые он запускает, могут содержать в себе киберугрозу. Это приведет к замедлению работы компьютера, появлению агрессивной рекламы, возникновению критических ошибок и в самых тяжелых случаях повреждение системы и личных данных.
Удаление или отключение Pythonw.exe никак не влияет на производительность и работу ОС. У файла высокий технический рейтинг опасности (47%), размер 27,136 (75% случаев) или 27,648 байт. Информации о MD5 и SHA-1 нет. Если вышеописанные характеристики не совпадают со значениями вашего файла – pythonw.exe был поврежден или заражен вирусом.
Как остановить процесс и исправить ошибку?
Ниже представлена инструкция по удалению файла pythonw.exe. Если он в будущем будет нужен, использующие его приложения самостоятельно распакуют или загрузят недостающие объекты. Поэтому, желая избавиться от ошибки, просто удалите старый файл и пользуйтесь программами дальше. Они сами подскажут, что от вас требуется.
Итак, для остановки и удаления процесса выполните следующее:
- Вызовите «Диспетчер задач» путем зажатия Ctrl+Shift+Esc.
- Найдите pythonw.exe и принудительно остановите процесс.
- Нажмите Win+R и вызовите окно «Выполнить».
- Введите cmd в текстовое поле и нажмите Enter.
- В окне командной строки напечатайте sc delete pythonw.exe и нажмите Enter.
- Дождитесь завершения операции и закройте окно.
Данной инструкции должно быть достаточно для решения проблемы с возникновением ошибок и загруженностью процессора. Если же ничего не помогло – проверьте ПК на наличие вирусов и нежелательного ПО с помощью AdwCleaner и Kaspersky Virus Removal Tool. Теперь вы знаете, что это за процесс pythonw.exe и как его остановить.
Подписывайтесь на нашу Email-рассылку. Спамить не будем, обещаем!)
[contact-form-7 id=»16177″ title=»Подпись по email»]
- Теги
- Вирус
- Вирусы
- Ошибки
- Процессы
Источник: https://geekon.media/obzor-processa-pythonw-exe/
ReviverSoft | Pythonw.exe Процесс
Расширение файла pythonw.exe является частью программного обеспечения для языка программирования Python. Файл предоставляет пользователям процесс, известный как ActiveState ActivePython.
Что файл нужно, чтобы дать пользователям возможность создавать сценарии без необходимости обращаться к консоли Windows, или то, что более известный как окне запроса DOS.
Файл запускает графический интерфейс пользователя, который позволяет программистам обойти обычных вопросов, возникающих при создании сценариев Python в консоли Windows, то есть направляется на DOS строке, когда Python запускается, вместо того, чтобы разрешили писать сценарии в нормальном интерфейсе Windows. Файл pythonw.
exe позволяет пользователям работать на своих сценариях вне консоли Windows. Файл автоматически создает программы, используя расширение файла,. Pyw, чтобы программа могла выполнить и непосредственно из Проводника, вместо того, чтобы в очередной раз использовать окно DOS, а является обычным способом для программ с расширением ру.. Этот файл находится в папке Program Files.
Большинство процессов несистемные, работающих под управлением может быть остановлен, потому что они не участвуют в управлении операционной системы. pythonw.exe. используется ActiveState ActivePython, Если вы закрыли pythonw.
exe, он, вероятно, начать все заново на более позднее время или после перезагрузки компьютера или, при старте приложения. Чтобы остановить pythonw.
exe, постоянно нужно удалить приложение, которое работает этот процесс, который в данном случае является ActiveState ActivePython, из вашей системы.
После деинсталляции приложений, что это хорошая идея, чтобы сканировать вам реестр системы на наличие оставшихся следов применения. Registry Reviver по ReviverSoft является отличным инструментом для этого.
Что такое процесс и как они влияют на мой компьютер?
Процесс обычно частью установленного приложения, такие как ActiveState ActivePython, или ваша операционная система, которая отвечает за функционирование в функции этого приложения.
Некоторые приложения требуют, чтобы у них процессы, запущенные все время, так что они могут сделать вещи, такие как проверки обновлений или уведомить вас, когда вы получаете мгновенное сообщение.
Некоторые плохо написанные приложения есть много процессов, которые работают, что не может быть потребовано и занимают ценное вычислительной мощности в вашем компьютере.
Мы не получили ни одной жалобы об этом процесс, имеющий высокие темпы воздействии на производительность ПК. Если у вас был неудачный опыт работы с ней, пожалуйста, сообщите нам об этом в х ниже, и мы будем его исследовать дальше.
Первое, что вы должны сделать, если pythonw.exe. вызывает ошибки на Вашем компьютере, чтобы запустить сканирование реестра Windows, с Registry Reviver Если вы по-прежнему наблюдаем ошибки после этого вы должны удалить программу, что pythonw.exe, принадлежит, в этом случае ActiveState ActivePython
Источник: https://www.reviversoft.com/processes/pythonw.exe
Pythonw.exe или python.exe?
Подведение итогов и дополнение существующих ответов:
- python.exe — это консольное (терминальное) приложение для запуска сценариев типа CLI.
- Если вы не запускаете из существующего окна консоли, python.exe открывает новое окно консоли.
- Стандартные потоки sys.stdin, sys.stdout и sys.stderr подключены к окну консоли.
- Выполнение синхронно при запуске из окна консоли cmd.exe или PowerShell: См. eryksun 1 комментарий ниже.
- Если появилось новое окно консоли, оно остается открытым до тех пор, пока script не завершится.
- При вызове из существующего окна консоли приглашение блокируется до завершения script.
-
pythonw.exe — графическое приложение для запуска сценариев GUI/no-UI-at-all.
- Откроется окно консоли консоли.
- Выполнение асинхронно:
- Когда вызывается из окна консоли, script запускается просто, и приглашение сразу возвращается, остается ли script или нет.
- Стандартные потоки sys.stdin, sys.stdout и sys.stderr НЕ доступны.
- Предостережение: Если вы не выполняете дополнительные шаги, у этого есть потенциально неожиданные побочные эффекты:
- Необработанные исключения приводят к script отменить молчание.
- В Python 2.x просто попытка использовать print() может привести к тому, что это произойдет (в 3.x, print() просто не действует).
- Чтобы предотвратить это изнутри script, и узнать больше, см. этот ответ моего.
- Ad-hoc, вы можете использовать перенаправление вывода: Спасибо, @handle.pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt (от PowerShell: cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt), чтобы фиксировать вывод stdout и stderr в файлах.
Если вы уверены, что использование print() является единственной причиной, по которой ваш script терпит неудачу с pythonw.exe, и вы не заинтересованы в выводе stdout, используйте команду @handle из комментариев: pythonw.exe yourScript.pyw 1>NUL 2>&1 Caveat. Этот метод перенаправления вывода не работает при непосредственном вызове сценариев *.pyw (в отличие от передачи пути script к pythonw.exe). См. eryksun 2-й комментарий и последующие действия ниже.
- Предостережение: Если вы не выполняете дополнительные шаги, у этого есть потенциально неожиданные побочные эффекты:
Вы можете контролировать, какой из исполняемых файлов запускает ваш script по умолчанию — например, при открытии из проводника — , выбирая правильное расширение имени файла:
- *.py файлы по умолчанию связаны (вызывается) с помощью python.exe
- *.pyw файлы по умолчанию связаны (вызывается) с помощью pythonw.exe
mklement0 18 мая '15 в 21:28
источник
поделиться
Если вы собираетесь вызывать python script из какого-либо другого процесса (например, из командной строки), используйте pythonw.exe. В противном случае ваш пользователь будет постоянно видеть окно cmd, запускающее процесс python. Он все равно будет запускать ваш script точно так же, но он не будет вторгаться в пользовательский интерфейс.
Примером может быть отправка электронной почты; python.exe появится окно CLI, отправьте электронное письмо, затем закройте окно. Он будет выглядеть как быстрая вспышка и может считаться несколько раздражающим. pythonw.exe избегает этого, но все равно отправляет электронное письмо.
Droogans 14 мар. '12 в 16:39
источник
поделиться
Источник: http://qaru.site/questions/60917/pythonwexe-or-pythonexe
Программа не работает. Что делать?
Моя программа не работает! Что делать? В данной статье я постараюсь собрать наиболее частые ошибки начинающих программировать на python 3, а также расскажу, как их исправлять.
Проблема: Моя программа не запускается. На доли секунды появляется чёрное окошко, а затем исчезает.
Причина: после окончания выполнения программы (после выполнения всего кода или при возникновении исключения программа закрывается. И если вы её вызвали двойным кликом по иконке (а вы, скорее всего, вызвали её именно так), то она закроется вместе с окошком, в котором находится вывод программы.
Решение: запускать программу через IDLE или через консоль.
Проблема: Не работает функция input. Пишет SyntaxError.
Пример кода:
>>> a = input()
hello world
File «», line 1 hello world ^
SyntaxError: unexpected EOF while parsing
- Причина: Вы запустили Python 2.
- Решение: Установить Python 3.
- Проблема: Где-то увидел простую программу, а она не работает.
- Пример кода:
name = raw_input()
print name
Ошибка:
File «a.py», line 3 print name ^
SyntaxError: invalid syntax
Причина: Вам подсунули программу на Python 2.
Решение: Прочитать об отличиях Python 2 от Python 3. Переписать её на Python 3. Например, данная программа на Python 3 будет выглядеть так:
name = input()
print(name)
Проблема: TypeError: Can't convert 'int' object to str implicitly.
Пример кода:
>>> a = input() + 5
8
Traceback (most recent call last): File «», line 1, in
TypeError: Can't convert 'int' object to str implicitly
Причина: Нельзя складывать строку с числом.
Решение: Привести строку к числу с помощью функции int(). Кстати, заметьте, что функция input() всегда возвращает строку!
>>> a = int(input()) + 5
8
>>> a
13
Проблема: SyntaxError: invalid syntax.
Пример кода:
a = 5
if a == 5 print('Ура!')
Ошибка:
File «a.py», line 3 if a == 5 ^
SyntaxError: invalid syntax
Причина: Забыто двоеточие.
Решение:
a = 5
if a == 5: print('Ура!')
Проблема: SyntaxError: invalid syntax.
Пример кода:
a = 5
if a = 5: print('Ура!')
Ошибка:
File «a.py», line 3 if a = 5 ^
SyntaxError: invalid syntax
Причина: Забыто равно.
Решение:
a = 5
if a == 5: print('Ура!')
Проблема: NameError: name 'a' is not defined.
Пример кода:
print(a)
Причина: Переменная «a» не существует. Возможно, вы опечатались в названии или забыли инициализировать её.
Решение: Исправить опечатку.
a = 10
print(a)
Проблема: IndentationError: expected an indented block.
Пример кода:
a = 10
if a > 0:
print(a)
Причина: Нужен отступ.
Решение:
a = 10
if a > 0: print(a)
Проблема: TabError: inconsistent use of tabs and spaces in indentation.
Пример кода:
a = 10
if a > 0: print(a) print('Ура!')
Ошибка:
File «a.py», line 5 print('Ура!') ^
TabError: inconsistent use of tabs and spaces in indentation
Причина: Смешение пробелов и табуляции в отступах.
Решение: Исправить отступы.
a = 10
if a > 0: print(a) print('Ура!')
Проблема: UnboundLocalError: local variable 'a' referenced before assignment.
Пример кода:
def f(): a += 1 print(a) a = 10
f()
Ошибка:
Traceback (most recent call last): File «a.py», line 7, in f() File «a.py», line 3, in f a += 1
UnboundLocalError: local variable 'a' referenced before assignment
Причина: Попытка обратиться к локальной переменной, которая ещё не создана.
Решение:
def f(): global a a += 1 print(a) a = 10
f()
Проблема: Программа выполнилась, но в файл ничего не записалось / записалось не всё.
Пример кода:
>>> f = open('output.txt', 'w', encoding='utf-8')
>>> f.write('bla')
3
>>>
Причина: Не закрыт файл, часть данных могла остаться в буфере.
Решение:
>>> f = open('output.txt', 'w', encoding='utf-8')
>>> f.write('bla')
3
>>> f.close()
>>>
Проблема
Источник: https://PythonWorld.ru/osnovy/programma-ne-raboaet.html
.pyw и pythonw не запускаются под Windows 7
Т.Л., д-р
- Чтобы устранение неисправностей, используйте перенаправление вывода на вызов:
pythonw myApp.py 1>stdout.txt 2>stderr.txt
Это будет захватывать вывод стандартный вывод, например, от print(), в файле stdout.txt и вывод stderr (например, из необработанных исключений), в файле stderr.txt; от PowerShell, используйте
cmd /c pythonw myApp.py 1>stdout.txt 2>stderr.txt).
Обратите внимание, что сам акт перенаправляет стандартный вывод может фактически сделать работу скрипта снова, если единственная причина его неудачи с pythonw было использование print (в Python 2.x — см. Ниже)
Caveat: Этот выход метод перенаправления, казалось бы, делает не работу при вызове *.
pyw сценариев непосредственно (в отличие от пропускания пути к файлу скрипт pythonw.exe). Дайте мне знать, если вы знаете, почему и/или если он работает для вас.
Поместите следующее в верхней части любого 2.x Python или 3.x скрипт, который вы хотите бегах с pythonw.exe:
import sys, os
if sys.executable.endswith(«pythonw.exe»):
sys.stdout = open(os.devnull, «w»);
sys.stderr = open(os.path.join(os.getenv(«TEMP»), «stderr-«+os.path.basename(sys.argv[0])), «w»)
Это гарантирует, что при запуске скрипта будет выполняться pythonw.exe:
- print() вызовы и явные вызовы sys.stdout() эффективно игнорируются (нет-OPS).
- Выход Stderr, в том числе из необработанного фатального исключения, отправляется в файл
%TEMP%stderr-; %TEMP% — стандартная переменная среды Windows, указывающая на папку текущего пользователя для временных файлов.
Другими словами: С учетом указанных выше кода в месте, проверка файла %TEMP%stderr- после того как ваш сценарий не удалось беззвучно при вызове с pythonw.exe.
Для объяснения, читайте дальше.
В Windows pythonw.exe для запуска GUI/не-UI-на-все сценарии, что означает, что в
стандартных входных и выходных потоков — sys.stdin, sys.stdout, sys.stderr НЕ доступны.
Это две неприятные побочные эффекты:
- Использование print() — какие цели sys.stdout по умолчанию — вызывает исключение в Python 2.x.
- Эта проблема исправлена в Python 3.x.
- Любое необработанное исключение — в том числе один, вызванного print() в 2.x — вызывает сценарий abort без звука.
- Сообщения об ошибках исключения по умолчанию относятся к sys.stderr, что является самой вещью, недоступной в этом сценарии.
Приведенный выше код устраняет эти проблемы путем:
- отправка выход стандартный вывод на нуль устройства, эффективно игнорируя любые попытки выхода на sys.stdout — будь то прямо или косвенно через print().
- отправка всех выходных данных stderr во временный файл.
Различия между 2.x Python и Python 3.x:
Когда скрипт запускается с pythonw.exe, sys.stdin, sys.stdout и sys.stderr:
- в Python 2.x: есть недействительный fil е дескрипторы
- возможный результата при попытке записи в sys.stdout или sys.stderr является следующим исключением: IOError: [Errno 9] Bad file descriptor
- Pitfall: Благодаря буферизации вывода, это исключение не поверхность, пока вы не выход, скажем, , 4 Кбайт; вы можете спровоцировать его мгновенно, вызвав pythonw.exe с -u (для небуферизованного вывода).
- print() слепо пытается установить sys.stdout (по умолчанию), поэтому рано или поздно он вызывает это исключение.
- в Python 3.x : есть набор для None
- Это дополняется функцией 3.x print(), выполняющей не оп (делать ничего), когда он считает, что sys.stdout — None, так что print() заявления могут по умолчанию безопасно использоваться — они просто будут игнорируются при запуске с pythonw.exe
- Однако из этого следует, что попытка использования sys.stdout.write() и sys.stderr.write() по-прежнему приводит к исключению.
См here для более фона.
Источник: https://stackoverrun.com/ru/q/6808277
.pyw и pythonw не работают под Windows 7
ТЛ; др
-
Для устранения неполадок используйте перенаправление вывода при вызове:
pythonw myApp.py 1>stdout.txt 2>stderr.txt
Это будет захватывать вывод stdout, например, из print() , в файле stdout.txt , и вывод stderr (например, из необработанных исключений) в файл stderr.txt ; из PowerShell, используйте cmd /c pythonw myApp.py 1>stdout.txt 2>stderr.txt ).
Обратите внимание, что сам акт перенаправления stdout может фактически заставить ваш скрипт снова работать , если единственной причиной его неудачи с pythonw было использование print (в Python 2.x — см. Ниже). Предостережение : этот метод перенаправления вывода, по-видимому, не работает при непосредственном вызове сценариев *.
pyw (в отличие от передачи пути файла сценария к pythonw.exe ). Дайте мне знать, если вы знаете, почему и / или это работает для вас.
- Чтобы исправить ваш скрипт :
Поместите следующее в верхнюю часть любого скрипта Python 2.x или 3.x, который вы хотите запустить с pythonw.exe :
import sys, os
if sys.executable.endswith(«pythonw.exe»):
sys.stdout = open(os.devnull, «w»);
sys.stderr = open(os.path.join(os.getenv(«TEMP»), «stderr-«+os.path.basename(sys.argv[0])), «w»)
Это обеспечивает следующее при запуске скрипта с pythonw.exe :
- Вызовы print() и явные вызовы sys.stdout() фактически игнорируются (no-ops).
- Вывод Stderr, в том числе из необработанного фатального исключения , отправляется в файл %TEMP%stderr- ; %TEMP% — это стандартная переменная среды Windows, которая указывает на папку текущего пользователя для временных файлов.
Другими словами: с приведенным выше кодом на месте, проверьте файл %TEMP%stderr- после того, как ваш скрипт потерпел неудачу в %TEMP%stderr- с pythonw.exe .
Для объяснения читайте дальше.
В Windows pythonw.exe предназначен для запуска сценариев GUI / no-UI-at-all, что означает, что стандартные sys.stdin и выходные потоки — sys.stdin , sys.stdout , sys.stderr НЕ доступны.
Это имеет два неприятных побочных эффекта :
- Использование print() которое по умолчанию предназначено для sys.stdout , вызывает исключение в Python 2.x.
- Эта проблема была исправлена в Python 3.x.
- Любое необработанное исключение, в том числе вызванное print() в 2.x, приводит к автоматическому прерыванию работы сценария.
- Сообщения об ошибках sys.stderr по умолчанию отправляются в sys.stderr , что в данном сценарии недоступно.
Приведенный выше код исправляет эти проблемы:
- отправка вывода stdout на нулевое устройство, фактически игнорируя любую попытку вывода в sys.stdout — явно или неявно через print() .
- отправив весь вывод stderr во временный файл.
Различия между Python 2.x и Python 3.x:
Когда скрипт запускается с pythonw.exe , sys.stdin , sys.stdout и sys.stderr :
- в Python 2.x : иметь неверные файловые дескрипторы
- sys.stdout результатом при попытке записи в sys.stdout или sys.stderr является следующее исключение: IOError: [Errno 9] Bad file descriptor
- Ошибка: из-за буферизации вывода это исключение может не появиться, пока вы не выведите, скажем, 4K байтов ; Вы можете вызвать его мгновенно, вызвав pythonw.exe с -u (для небуферизованного вывода).
- print() вслепую пытается sys.stdout (по умолчанию), поэтому рано или поздно он вызывает это исключение.
- в Python 3.x : не установлены
- Это дополняется функцией 3.x print() которая выполняет no-op (ничего не делая), когда обнаруживает, что sys.stdout равен None , так что операторы print() могут по умолчанию безопасно использоваться — они просто будут игнорироваться при запуске с pythonw.exe
- Однако из этого следует, что попытка использовать sys.stdout.write() и sys.stderr.write() прежнему приводит к исключению.
Смотрите здесь для получения дополнительной информации.
Источник: https://geekquestion.com/8863724-pyw-i-pythonw-ne-rabotajut-pod-windows-7/
.pyw и pythonw не запускаются под Windows 7
Запуск простого файла .py или .pyw python приводит к тому, что python.exe появляется в диспетчере задач.
python myApp.py python myApp.pyw
Однако, когда мы пытаемся запустить его, не используя консоль, сценарий не запускается, и python.exe или pythonw.exe появляется в диспетчере задач
pythonw myApp.pyw pythonw myApp.py
Как устранить проблему? В системе работает Python 2.7.8 x64.
ТЛ; др
-
Чтобы устранить неполадки , используйте перенаправление вывода при вызове:
pythonw myApp.py 1>stdout.txt 2>stderr.txt
Это будет захватывать вывод stdout, например, из print() , в файл stdout.txt и вывод stderr (например, из необработанных исключений), в файл stderr.txt ; от PowerShell, используйте cmd /c pythonw myApp.py 1>stdout.txt 2>stderr.txt ).
Обратите внимание, что сам акт перенаправления stdout может заставить ваш скрипт работать снова , если единственной причиной его отказа с pythonw было использование print (в Python 2.x – см. Ниже). Caveat : Этот метод перенаправления вывода, по-видимому, не работает при непосредственном вызове скриптов *.
pyw (в отличие от передачи пути файла сценария к pythonw.exe ). Сообщите мне, знаете ли вы, и / или если это сработает для вас.
- Чтобы исправить ваш скрипт :
Поместите следующее в начало любого скрипта Python 2.x или 3.x, который вы хотите запустить с помощью pythonw.exe :
import sys, os if sys.executable.endswith(«pythonw.exe»): sys.stdout = open(os.devnull, «w»); sys.stderr = open(os.path.join(os.getenv(«TEMP»), «stderr-«+os.path.basename(sys.argv[0])), «w»)
Это гарантирует следующее, когда скрипт запускается с pythonw.exe :
- print() и явные вызовы sys.stdout() эффективно игнорируются (без операций).
- Выход Stderr, в том числе из необработанного фатального исключения , отправляется в файл %TEMP%stderr- ; %TEMP% – стандартная переменная среды Windows, которая указывает на папку текущего пользователя для временных файлов.
Другими словами: с приведенным выше кодом проверьте файл %TEMP%stderr- после того, как ваш скрипт вышел из строя при вызове с pythonw.exe .
Для объяснения, читайте дальше.
В Windows pythonw.exe предназначен для запуска сценариев GUI / no-UI-at-all, что означает, что стандартные потоки sys.stdin вывода – sys.stdin , sys.stdout , sys.stderr НЕ доступны.
Это имеет два неприятных побочных эффекта :
- Использование print() – по умолчанию – sys.stdout – вызывает исключение в Python 2.x.
- Эта проблема была исправлена в Python 3.x.
- Любое необработанное исключение – в том числе одно, вызванное print() в 2.x, – приводит к тому, что скрипт прерывается молча .
- Сообщения об ошибках исключения отправляются в sys.stderr по умолчанию, что само по себе не доступно в этом сценарии.
Вышеупомянутый код устраняет эти проблемы:
- отправляя вывод stdout на нулевое устройство, фактически игнорируя любые попытки вывода на sys.stdout – явно или неявно через print() .
- отправляя весь вывод stderr во временный файл.
Различия между Python 2.x и Python 3.x:
Когда скрипт запускается с pythonw.exe , sys.stdin , sys.stdout и sys.stderr :
- в Python 2.x : имеют недопустимые дескрипторы файлов
- sys.stdout результатом при попытке записи в sys.stdout или sys.stderr является следующее исключение: IOError: [Errno 9] Bad file descriptor
- Pitfall: из-за буферизации вывода это исключение может не отображаться до тех пор, пока вы не произведете, скажем, 4 Кбайта ; вы можете спровоцировать его мгновенно, вызвав pythonw.exe с -u (для небуферизованного вывода).
- print() слепо пытается sys.stdout (по умолчанию), поэтому рано или поздно он вызывает это исключение.
- в Python 3.x : установлены на None
- Это дополняется функцией 3.x print() выполняющей no-op (ничего не делая), когда обнаруживает, что sys.stdout имеет значение None , так что операторы print() по умолчанию могут быть безопасно использованы – их просто игнорируют при запуске с pythonw.exe
- Однако из этого следует, что попытка использования sys.stdout.write() и sys.stderr.write() прежнему приводит к исключению.
См. Здесь для получения дополнительной информации.
Попробуйте добавить систему import sys; sys.stderr = open(«errlog.txt», «w») строк import sys; sys.stderr = open(«errlog.txt», «w») import sys; sys.stderr = open(«errlog.txt», «w») до начала myApp.py . Затем просмотрите errlog.txt для errlog.txt или любых других сообщений об ошибках.
Я столкнулся с той же проблемой в собственном скрипте и обнаружил, что при добавлении вывода от ответа Росса сценарий будет работать.
Похоже, что по какой-то причине перенаправление вывода устраняет проблему. Поскольку мне не интересно записывать вывод на диск, я вместо этого написал его /dev/null (или эквивалент платформы):
if ( sys.platform == 'win32' and sys.executable.split( '\' )[-1] == 'pythonw.exe'): sys.stdout = open(os.devnull, 'w') sys.stderr = open(os.devnull, 'w')
Оператор if гарантирует, что это происходит только при запуске скрипта из pythonw.exe . Я не уверен, что это связано, но важно было сделать это до других импортных операций (в том числе, например, import logging ).
У меня была аналогичная проблема.
После отладки шаг за шагом, записывая в файл журнала, я обнаружил, что pythonw.exe разбился после инструкции, которая пыталась использовать вызов: sys.stdout.write (). Оказывается, при запуске с pythonw.exe sys.stdout является None.
Если вы используете функции sys.stdout / stderr / stdin и собираетесь использовать вашу программу с pythonw.exe, добавление проверки для «Нет» – хорошая идея.
Я не уверен, что понимаю вашу проблему, но я думаю, что это то, что вам нужно знать
вам нужно щелкнуть правой кнопкой мыши по файлу py или pyw и выбрать open с помощью … find python.exe (возможно, C: Python27 python.exe) .. установите флажок, который говорит всегда открывать … теперь вы можете просто удвоить щелкните его, если вы хотите запустить его
(обычно установщик устанавливает это для вас …)
Это старый ответ, но я также хочу оставить свое решение:
- Открытый CMD (с повышенными привилегиями или нет – зависит от ваших потребностей)
- Перейдите в каталог сценария .py / .pyw – это важно.
-
Запустить pythonw со скриптом в качестве аргумента
cd E:myscriptfolder pythonw script.py
У меня была аналогичная проблема после обновления до моей компьютерной памяти. Оказывается, мне пришлось переустановить Pillow (библиотека, используемая для обработки изображений). Поэтому убедитесь, что он установлен, а если нет, установите его, используя «pip install Pillow» в cmd.
Источник: https://www.rupython.com/pyw-pythonw-windows-7-19720.html