Как запустить скрипты python на windows
Перейти к содержимому

Как запустить скрипты python на windows

  • автор:

Запуск Python скрипта от имени системы (Windows)

Написал скрипт для удаления неких разделов, подразделов и их ключей, в т.ч. в кусте реестра HKEY_LOCAL_MACHINE.
Использую модуль winreg, для доступа указаны привилегии winreg.KEY_ALL_ACCESS.
Есть проблемка, даже при запуске скрипта от имени Администратора возникает ошибка: «[WinError 5] Отказано в доступе», именно для HKEY_LOCAL_MACHINE.
Погуглив и поискав инфу самостоятельно, понял, что в HKEY_LOCAL_MACHINE так просто нельзя удалять/менять/просматривать что-либо даже администратору системы.

Есть ли вариант как запустить скрипт от имени системы?

Пробовал через планировщик задач, но не завелось, задача завершается с кодом возврата 2147942401, перенаправление вывода скрипта в C:\out.txt не срабатывает:

1676749067348.png

1676749139576.png

1676749261763.png

Exited3n

Codeby Games
10.05.2022 561 160

Всем доброго времени суток, уважаемые форумчане!

Написал скрипт для удаления неких разделов, подразделов и их ключей, в т.ч. в кусте реестра HKEY_LOCAL_MACHINE.
Использую модуль winreg, для доступа указаны привилегии winreg.KEY_ALL_ACCESS.
Есть проблемка, даже при запуске скрипта от имени Администратора возникает ошибка: «[WinError 5] Отказано в доступе», именно для HKEY_LOCAL_MACHINE.
Погуглив и поискав инфу самостоятельно, понял, что в HKEY_LOCAL_MACHINE так просто нельзя удалять/менять/просматривать что-либо даже администратору системы.

Есть ли вариант как запустить скрипт от имени системы?

Пробовал через планировщик задач, но не завелось, задача завершается с кодом возврата 2147942401, перенаправление вывода скрипта в C:\out.txt не срабатывает:

Все у тебя правильно, права наивысшие, система стоит. Попробуй в планировщике указать батник, а в него пропищи python script.py blah blah
Сейчас попробовал из под админа удалить запись из HKLM, все ок. Юзал powershell.

Запуск Python скрипта через планировщик Windows

В одной из записей блога я писал как можно автоматизировать выполнение скрипта при помощи cron и linux. Тогда речь шла о WSL (подсистема Linux для Windows). К сожалению с производительностью у WSL пока не все гладко, поэтому пришлось все портировать на Windows.

Сам вопрос запуска скрипта по расписанию в Windows на самом деле очень прост. Нужно лишь создать батник (файл с расширением .bat) прописать в нем все необходимые манипуляции и настроить выполнение данного файла в планировщике. Делается это так:

  • В текстовом редакторе создаете новый файл
  • Добавляете в него ваш код, в моем случае это одна строчка
    C:\Users\User\.virtualenvs\site-GQljvJBG\Scripts\python.exe «D:/dev/site/backend/cron.py»
  • Сохраняете файл с расширением .bat, например cron.bat.
  • В планировщике прописываете его выполнение

Особенности запуска Django кода

Если вы пропишите запуск какого нибудь Django скрипта то получите ошибку.

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings

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

import os import django<br>os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings' django.setup()

Где ‘project.settings’ путь к файлу settings.py вашего Джанго проекта.

Настроить задачу в планировщике задач Windows

Планировщик задач Windowsявляется приложением Windows по умолчанию для управления задачами в ответ на триггер на основе событий или времени. Например, вы могли бы предложить определенный щелчок и компьютерные действия (такие как перезагрузка) или даже предложить время, каккаждый первый день финансового кварталавыполнить задачу.

В более широком плане эта задача будет содержать сценарий и метаданные, чтобы определить, что и как будет выполняться действие. Вы можете добавить определенный контекст безопасности в аргумент и контролировать, где планировщик будет запускать программу. Windows будет сериализовать все эти задачи как.JOBфайлы в специальной папке под названиемПапка задач,

В этом руководстве мы собираемся установить событие, основанное на времени, для запуска нашего приложения и вывода данных в SQLite. Всего там

  1. Нажмите Пуск Windows, найдите планировщик задач и откройте его.
  2. Нажмите Create Basic Task в правом окне.
  3. Выберите время запуска.
  4. Укажите точное время для нашего предыдущего выбора.
  5. Запустить программу
  6. Вставьте скрипт вашей программы, где вы сохранили свой bat файл
  7. Нажмите Готово.

Давайте начнем!

  1. Нажмите Пуск Windows, найдите планировщик задач и откройте его.,

2.Нажмите Create Basic Task в правом окне.,

Вы должны указывать имя задачи (например, веб-очистка) и описание (например, веб-очистка и дамп SQLite автоматически каждый день в 18:00)

3.Выберите время срабатывания,

У вас будет возможность выбрать временной триггер ежедневно, еженедельно и даже ежемесячно. Логически этот выбор во многом зависит от того, как часто вы хотите обновить значения из вашего источника данных. Например, если ваша задача — очистить баланс MarketWatch Stocks, вы должны запускать сценарии каждый финансовый квартал.

4.Выберите точное время для нашего предыдущего выбора,

Мы выберем месяц январь, апрель, июль и сентябрь, чтобы указать весь ранний финансовый квартал.

5 Запустить программу

Здесь вы сможете запускать скрипты Python, отправлять электронную почту и даже отображать сообщение. Не стесняйтесь выбирать те, которые вам наиболее удобны. Однако вам следует остерегаться устаревших задач, которые будут удалены в последующих исправлениях.

6.Вставьте скрипт вашей программы, где вы сохранили свой bat файл

Это запустит планировщик задач для вашего скрипта Python для автоматизации. Убедитесь, что вы также включили Пуск в папку вашего приложения, чтобы получить доступ ко всем соответствующим элементам (исполняемые файлы Selenium Browser / диск SQLite)

7.Нажмите Готово,

Вы можете проверить созданное расписание задач на первой странице Планировщика задач.

Поздравляем, вы установили свой первый автоматический планировщик в Windows.

Результат

Вот анимация GIF для ваших ссылок. Обратите внимание, как планировщик сам запускает скрипты Python. Как только сценарии завершатся, он извлечет извлеченное значение из базы данных SQLite. В будущем это приложение будет запускаться каждый раз, когда выполняется условие триггера, и добавлять обновленные значения в SQLite.

В заключение…

Я действительно надеюсь, что это было отличное чтение и источник вдохновения для вас, чтобы развиваться и вводить новшества.

пожалуйстаКомментарийниже, чтобы предложить и отзывы.

Если вам действительно это нравится, пожалуйста, проверьте мой профиль. Есть больше о статьях Data Analytics и Python Projects, которые будут соответствовать вашим интересам.

об авторе

Винсент Татан — энтузиаст данных и технологий, имеющий соответствующий опыт работы в Visa Inc. и Lazada для реализации микросервисных архитектур, бизнес-аналитики и аналитических конвейерных проектов. ,

Винсент — коренной индонезийец, имеющий достижения в решении проблем, а также сильные стороны в разработке полного стека, анализе данных и стратегическом планировании.

Он активно консультирует SMU BI & Analytics Club, руководит начинающими учеными и инженерами в области данных из разных областей и раскрывает свой опыт для бизнеса в разработке своих продуктов.

Запуск скрипта написанного на python на windows, где не установлен python

Не запускается скрипт на Windows, где не установлен python.
Команда в коде на выполнение написана так:

1 2 3 4
def Adminnewpriglash(): subprocess.Popen("python C:\Avtotest\Adminnewpriglash.py") adminmenu2.add_command(label="Приглашения", command=Adminnewpriglash)

При запуске в консоли отображается след. ошибка:

1 2 3 4 5 6 7 8
Exception in Tkinter callback Traceback (most recent call last): File "tkinter\__init__.py", line 1705, in __call__ File "avtotest.py", line 84, in Adminnewpriglash subprocess.Popen("python C:\Avtotest\Adminnewpriglash.py") File "subprocess.py", line 769, in __init__ File "subprocess.py", line 1172, in _execute_child FileNotFoundError: [WinError 2] Не удается найти указанный файл

Почему не запускается? Вроде в папке, где находится скрипт собраны все библиотеки для запуска. Это было выполнено с помощью модуля pyinstaller.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Запуск Python Скрипта из С++
Доброго времени суток. Подскажите пожалуйста в чем ошибка. Есть программа на С++ вызывающая.

Запуск Python скрипта
Доброго времени суток, проблема с запуском скрипта из WPF C# — запуска происходит, но окно.

Запуск python-скрипта из Java
Привет, есть такой код: Process p = Runtime.getRuntime().exec(command); InputStream stdout =.

Запуск скрипта Python в программе C++
Всем привет! Подскажите, пожалуйста, возможно ли из С++ вызвать функцию из файлика на питоне, в.

Запуск python скрипта из C# приложения
Доброго времени суток, помогите пожалуйста реализовать несложную задачку: есть много скриптов.

Эксперт Python

5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

ЦитатаСообщение от Lemit Посмотреть сообщение

Вроде в папке, где находится скрипт собраны все библиотеки для запуска

Но python’а то нет в PATH на этом компе . Откуда Popen знает куда ты его засунул? Или ты думаешь она обязана его в твоем каталоге найти?
Наивный. Твой exe на самом деле при запуске распаковывается во временную папку в Temp вместе со всем добром.

Регистрация: 17.02.2020
Сообщений: 4

Благодарю за ответ. Если Вы про переменные среды, то в переменной Path была указана папка, где лежат все собранные библиотеки и файлы с помощью pyinstaller. А если Вы говорите что при запуске оно распаковывается во временной папке Temp, то ее нужно указывать в Path? или чушь несу?)

Эксперт Python

5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

ЦитатаСообщение от Garry Galler Посмотреть сообщение

python’а то нет в PATH на этом компе .

Прочитай еще раз эту фразу. С упором на слово «на этом (то есть чужом) компе».

Добавлено через 38 секунд

ЦитатаСообщение от Lemit Посмотреть сообщение

то ее нужно указывать в Path?

Нет — не нужно. Нужен скрипт определения временного каталога в который распаковывается архив.
Ищите по слову MEIPASS.
Выдержка из документации которую обычно всем лень читать:

When a bundled app starts up, the bootloader sets the sys.frozen attribute and stores the absolute path to the bundle folder in sys._MEIPASS. For a one-folder bundle, this is the path to that folder. For a one-file bundle, this is the path to the temporary folder created by the bootloader (see How the One-File Program Works).

И тогда можно этот путь подставлять в Popen.

Добавлено через 7 минут
P.S. Только я не понял: что именно не находится файл C:\Avtotest\Adminnewpriglash.py или сам python?
В любом случае было очень глупо зашивать абсолютные пути в команду.
Пути должны всегда вычисляться динамически.

Регистрация: 17.02.2020
Сообщений: 4

Нет — не нужно. Нужен скрипт определения временного каталога в который распаковывается архив.
Ищите по слову MEIPASS.
Выдержка из документации которую обычно всем лень читать:

P.S. Только я не понял: что именно не находится файл C:\Avtotest\Adminnewpriglash.py или сам python?
В любом случае было очень глупо зашивать абсолютные пути в команду.
Пути должны всегда вычисляться динамически.

Файл Adminnewpriglash.py как раз таки находится по указанному адресу, но видимо проблема в запуске этого файла, т.к не установлен питон на ПК, то файл не запускается через команду:

subprocess.Popen("python C:\Avtotest\Adminnewpriglash.py")

Может быть есть альтернатива для запуска этого файла?
Регистрация: 17.02.2020
Сообщений: 4

После прочтения о MEIPASS стало понятно, что он нужен, если скрипт собирается в один файл, а у меня не в один файл собиралось.
В общем есть временное(а может и постоянное) решение скопилить все файлы в exe и их уже запускать из главного окна вместо файлов *.py:

def Adminnewpriglash(): subprocess.Popen("C:\Avtotest\Adminnewpriglash.exe")

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Запуск Python скрипта по Cron
Всем привет! Не получается настроить запуск python скрипта из под linux по расписанию CRON. Если.

Запуск Python скрипта на VPS
Добрый день У меня есть скрипт на Python, который должен обрабатывать результат работы скрипта на.

Запуск Python скрипта с использованием Jupyter
Доброго времени суток! Впервые столкнулась с пайтоном, поэтому прошу помощи. Мое задание состоит.

Запуск скрипта python через QProcess
Я пытаюсь сейчас сделать программу, которая запускает питоновский скрипт через QProcess. Скрипт.

Запуск скрипта python через javascript
У меня есть набор данных за год, также есть скрипт, который строит график по этим данным за.

Запуск скрипта Python через шедулер
Добрый день. Прошу помочь с постановкой питон-скрипта на запуск по расписанию, так как вылезло.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *