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

Как запустить скрипт на питоне в windows

  • автор:

Начало работы с Python в Windows для создания сценариев и автоматизации

Ниже приведено пошаговое руководство по настройке среды разработки и началу работы с Python для создания сценариев и автоматизации операций файловой системы в Windows.

В этой статье рассматривается настройка среды для использования некоторых полезных библиотек в Python, которые могут автоматизировать задачи на разных платформах, таких как поиск в файловой системе, доступ к Интернету, анализ типов файлов и т. д. с помощью подхода, ориентированного на Windows. Для операций, относящихся к Windows, извлеките ctypes, совместимую с C библиотеку функций с кодом на другом языке программирования для Python, winreg, функции, предоставляющие API реестра Windows для Python, и Python/WinRT, включив доступ к API среды выполнения Windows в Python.

Настройка среды разработки

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

Если для веб-разработки на Windows вы используете Python, рекомендуем использовать другую установку с применением подсистемы Windows для Linux. Найдите пошаговое руководство. Начало работы с Python для веб-разработки в Windows. Если вы еще не знакомы с Python, ознакомьтесь с нашим руководством. Начало работы с Python в Windows для начинающих. Для некоторых сложных сценариев (например, необходимо получить доступ к установленным файлам Python или изменить файлы Python, создавать копии двоичных файлов или использовать библиотеки DLL Python напрямую), вам может потребоваться скачать конкретный выпуск Python непосредственно из python.org или рассмотреть возможность установки альтернативы, например Anaconda, Jython, PyPy, WinPython, IronPython и т. д. Мы рекомендуем использовать это только в том случае, если вы являетесь более продвинутым программистом Python с определенной причиной выбора альтернативной реализации.

установите Python;

Чтобы установить Python с помощью Microsoft Store, сделайте следующее:

  1. Перейдите в меню Пуск (значок Windows в нижнем левом углу), введите «Microsoft Store» и щелкните ссылку, чтобы открыть магазин.
  2. Когда магазин откроется, выберите Поиск в верхнем правом меню и введите «Python». Выберите, какую версию Python вы хотите использовать, из результатов в разделе «Приложения». Мы рекомендуем использовать самую последнюю версию, если только у вас нет причин для обратного (например, по причине согласования с версией, использованной в уже существующем проекте, над которым вы планируете работать). Определив, какую версию вы хотите установить, выберите Получить.
  3. После того как Python завершит процесс загрузки и установки, откройте Windows PowerShell, используя меню Пуск (значок Windows в нижнем левом углу). После открытия PowerShell введите Python —version , чтобы убедиться, что Python3 установлен на компьютере.
  4. Установка Python из Microsoft Store содержит стандартный диспетчер пакетов pip. Pip позволяет устанавливать дополнительные пакеты, которые не входят в стандартную библиотеку Python, и управлять ими. Чтобы убедиться, что у вас есть pip, который можно использовать для установки пакетов и управления ими, введите pip —version .

Установите Visual Studio Code.

При использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).

Загрузите VS Code для Windows и следуйте инструкциям по установке: https://code.visualstudio.com.

Установка расширения Microsoft Python

Установите расширение Microsoft Python, чтобы воспользоваться преимуществами функций поддержки VS Code. Подробнее.

  1. Откройте окно расширения VS Code с помощью CTRL+SHIFT+X (или используйте меню, чтобы перейти к Вид>Расширения).
  2. В верхнем поле Поиск расширений в Marketplace, введите: Python.
  3. Найдите расширение Python (ms-python.python) от Microsoft и нажмите зеленую кнопку Установить.

Откройте встроенный терминал PowerShell в VS Code

VS Code содержит встроенный терминал, который позволяет открывать командную строку Python с помощью PowerShell, создавая простой рабочий процесс между редактором кода и командной строкой.

    Откройте терминал в VS Code, выберите Просмотр>Терминал или используйте сочетание клавиш Ctrl+` (используя символ обратного апострофа).

Примечание. По умолчанию этим терминалом должен быть PowerShell, но если его нужно изменить, используйте Ctrl+Shift+P, чтобы ввести команду. Введите терминал. Выберите оболочку по умолчанию и список параметров терминала будет отображаться, содержащий PowerShell, командную строку, WSL и т. д. Выберите нужный и введите ctrl+SHIFT+’ (с помощью backtick) для создания нового терминала.

Python command line in VS Code

  • В окне терминала VS Code откройте Python, введя: python
  • Попробуйте использовать интерпретатор Python, введя: print(«Hello World») . Python вернет фразу «Hello World».
  • Чтобы выйти из Python, введите exit() , quit() или нажмите клавиши CTRL+Z.
  • Установка Git (необязательно)

    Если вы планируете совместно работать над кодом Python с другими пользователями или размещать проект на сайте с открытым исходным кодом (например, GitHub), примите во внимание, что VS Code поддерживает управление версиями с помощью Git. Вкладка системы управления версиями в VS Code отслеживает все изменения и содержит общие команды Git (добавление, фиксация, принудительная отправка, извлечение) прямо в пользовательском интерфейсе. Сначала необходимо установить Git для включения панели управления версиями.

    1. Скачайте и установите Git для Windows с веб-сайта git-scm.
    2. В комплект входит мастер установки, который задает вам ряд вопросов о параметрах установки Git. Рекомендуется использовать все параметры по умолчанию, если у вас нет конкретной причины изменить какой-либо из них.
    3. Если вы никогда не использовали Git, обратитесь к руководствам по GitHub. Они помогут вам приступить к работе.

    Пример сценария для вывода структуры каталога файловой системы

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

    Начнем с простого сценария, в котором описано дерево каталогов и отображено структуру каталогов.

    1. Откройте PowerShell, используя меню Пуск (нижний левый значок Windows).
    2. Создайте каталог для проекта: mkdir python-scripts , а затем откройте этот каталог: cd python-scripts .
    3. Создайте несколько каталогов для использования с нашим примером сценария:

    mkdir food, food\fruits, food\fruits\apples, food\fruits\oranges, food\vegetables 
    new-item food\fruits\banana.txt, food\fruits\strawberry.txt, food\fruits\blueberry.txt, food\fruits\apples\honeycrisp.txt, food\fruits\oranges\mandarin.txt, food\vegetables\carrot.txt 
    mkdir src new-item src\list-directory-contents.py 

    Примечание. Python — интерпретируемый язык, то есть он выступает в качестве виртуальной машины, имитируя физический компьютер. Существуют различные типы интерпретаторов Python, которые можно использовать: Python 2, Python 3, Anaconda, PyPy и т. д. Чтобы запустить код Python и получить Python IntelliSense, необходимо сообщить VS Code, какой интерпретатор следует использовать. Если нет конкретной причины для выбора другого интерпретатора, мы рекомендуем придерживаться интерпретатора, который VS Code выбирает по умолчанию (Python 3 в нашем случае). Чтобы изменить интерпретатор Python, выберите интерпретатор, отображаемый в синей строке в нижней части окна VS Code, или откройте палитру команд (CTRL+SHIFT+P) и введите команду Python: Выбор интерпретатора. На экране появится список установленных интерпретаторов Python. Using Python environments in VS Code(Использование сред Python в VS Code).

    import os root = os.path.join('..', 'food') for directory, subdir_list, file_list in os.walk(root): print('Directory:', directory) for name in subdir_list: print('Subdirectory:', name) for name in file_list: print('File:', name) print() 
    cd src 
    python3 .\list-directory-contents.py 

    Результат должен выглядеть примерно так:

    Directory: ..\food Subdirectory: fruits Subdirectory: vegetables Directory: ..\food\fruits Subdirectory: apples Subdirectory: oranges File: banana.txt File: blueberry.txt File: strawberry.txt Directory: ..\food\fruits\apples File: honeycrisp.txt Directory: ..\food\fruits\oranges File: mandarin.txt Directory: ..\food\vegetables File: carrot.txt 

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

    Если вы не можете установить Python 3 из Microsoft Store, прочтите об этой проблеме, чтобы ознакомиться с примером управления путями для этого примера скрипта.

    Пример сценария для изменения всех файлов в каталоге

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

      В папке src в каталоге python-scripts создайте новый файл Python для своего сценария:

    new-item update-filenames.py 

    Примечание. os.getmtime возвращает метку времени в тактах, что трудно читать. Сначала его необходимо преобразовать в стандартную строку datetime.

    import datetime import os root = os.path.join('..', 'food') for directory, subdir_list, file_list in os.walk(root): for name in file_list: source_name = os.path.join(directory, name) timestamp = os.path.getmtime(source_name) modified_date = str(datetime.datetime.fromtimestamp(timestamp)).replace(':', '.') target_name = os.path.join(directory, f'_') print(f'Renaming: to: ') os.rename(source_name, target_name) 
    Renaming: ..\food\fruits\banana.txt to: ..\food\fruits\2019-07-18 12.24.46.385185_banana.txt Renaming: ..\food\fruits\blueberry.txt to: ..\food\fruits\2019-07-18 12.24.46.391170_blueberry.txt Renaming: ..\food\fruits\strawberry.txt to: ..\food\fruits\2019-07-18 12.24.46.389174_strawberry.txt Renaming: ..\food\fruits\apples\honeycrisp.txt to: ..\food\fruits\apples\2019-07-18 12.24.46.395160_honeycrisp.txt Renaming: ..\food\fruits\oranges\mandarin.txt to: ..\food\fruits\oranges\2019-07-18 12.24.46.398151_mandarin.txt Renaming: ..\food\vegetables\carrot.txt to: ..\food\vegetables\2019-07-18 12.24.46.402496_carrot.txt PS C:\src\python-scripting\src> python3 .\list-directory-contents.py ..\food\ Directory: ..\food Subdirectory: fruits Subdirectory: vegetables Directory: ..\food\fruits Subdirectory: apples Subdirectory: oranges File: 2019-07-18 12.24.46.385185_banana.txt File: 2019-07-18 12.24.46.389174_strawberry.txt File: 2019-07-18 12.24.46.391170_blueberry.txt Directory: ..\food\fruits\apples File: 2019-07-18 12.24.46.395160_honeycrisp.txt Directory: ..\food\fruits\oranges File: 2019-07-18 12.24.46.398151_mandarin.txt Directory: ..\food\vegetables File: 2019-07-18 12.24.46.402496_carrot.txt 

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

    Дополнительные ресурсы

    • Документация Python: Доступ к файлам и каталогам: документация По Python о работе с файловыми системами и использовании модулей для чтения свойств файлов, управления путями в переносимом режиме и создании временных файлов.
    • Сведения о Python: String_Formatting учебнике. Дополнительные сведения об использовании оператора «%» для форматирования строк.
    • 10 методов файловой системы Python с которыми вы должны быть знакомы: Средняя статья об управлении файлами и папками с помощью os и shutil .
    • Руководство по hitchhikers на Python: системы Администратор istration: «рекомендуемое руководство», которое предлагает обзоры и рекомендации по темам, связанным с Python. В этом разделе описываются средства и платформы администрирования систем. Данное руководство размещено на сервере GitHub, чтобы вы могли подавать заявки и вносить свой вклад.

    Совместная работа с нами на GitHub

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

    Как запустить скрипт на Python

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

    Интерпретатор Python

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

    Существует несколько интерпретаторов:

    • написанные на языке программирования С;
    • написанные на языке программирования Java;
    • написанные на языке Python;
    • программы, реализованные в среде .NET.

    Выбор конкретного варианта для конечного пользователя значения не имеет. Независимо от вида программы, написанный код будет выполняться именно так, как предусмотрено правилами этого языка.

    Запуск возможен двумя способами: как готовая к использованию программная последовательность (скрипт или модуль) или как отдельные куски кода, которые вводятся прямо в окно программы.

    Интерактивный запуск кода

    Для тестирования отдельных команд можно использовать интерпретатор в режиме интерактивного сеанса. Для этого необходимо открыть командную строку операционной системы и ввести команду, которая запускает интерпретатор.

    Для ОС Linux это будет выглядеть следующим образом:

    $ python3 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 

    Теперь можно вводить команды, которые будут выполняться сразу после этого. Минус подобного подхода в том, что вся введенная последовательность не сохраняется после закрытия текущей сессии.

    Интерактивное исполнение кода необходимо для того, чтобы немедленно протестировать фрагмент написанного кода. Кроме того, его можно использовать в процессе обучения для проверки действий тех или иных операторов «на лету». Этот способ интерпретации команд позволяет попробовать нужные вам функции языка, не прибегая к написанию отдельных скриптов для этого.

    Выйти из интерактивного режима можно с помощью команды quit(), или просто закрыв окно терминала в Windows.

    Для открытия терминала или командной строки перед запуском самого интерпретатора необходимо:

    • В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
    • В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы. Можно использовать xterm или Konsole.
    • В macOS для получения доступа к терминалу необходимо выбрать меню «Приложения», после чего перейти в раздел «Утилиты» и кликнуть на элементе «Терминал».

    Как работает интерпретатор Python для скриптов

    Запуск на исполнение написанных скриптов или модулей производится в пакетном режиме. И выполняется по сложной схеме, которая состоит из следующих этапов:

    1. Последовательная обработка всех операторов, которые записаны в скрипте.
    2. Компиляция исходного хода в промежуточный формат. Интерпретатор создает байт-код, который представляет собой язык программирования низкого уровня, независимый от платформы и операционной системы. Байт-код необходим для оптимизации процесса выполнения скрипта.
    3. Исполнение полученного кода. На этом этапе вступает в действие виртуальная машина Python (PVM), которая циклично перебирает каждый оператор из скрипта и запускает его на исполнение. Как будто вы вводите каждую команду последовательно в интерактивном интерпретаторе.

    Запуск скриптов в командной строке

    В интерактивном режиме, который обсуждался выше, можно записывать и выполнять любое количество строк кода. Но после закрытия окна терминала они не сохраняются. Поэтому реальные программы на Python пишутся в виде скриптов и представляют собой обычные текстовые файлы. Чтобы избежать путаницы при их хранении, им присваиваются расширения .py или .piw.

    Создавать текстовый файл можно с помощью любого редактора, в том числе Notepad. Однако лучше использовать более продвинутые решения, например Sublime Text. Для примера возьмем наиболее простой скрипт, с которого начинается знакомство с любым языком программирования.

    #!/usr/bin/env python3 print('Hello World!') 

    Файл можно сохранить в вашем рабочем каталоге с любым именем и расширением .py.

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

    $ python3 hello.py Hello World! 

    В приведенном выше примере файл был назван «hello.py». После ввода команды нужно нажать клавишу «Ввод», и на экране появится результат работы скрипта. То есть надпись «Привет, Мир» или классическое английское «Hello World»!

    Если файл с программой сохранен не в каталоге с интерпретатором, нужно указывать путь к нему.

    Переназначение устройства вывода информации

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

    $ python3 hello.py > output.txt 

    По результатам работы скрипта создается файл с именем output.txt, в который сохраняется все то, что должно было появиться на экране во время работы в программе. Это стандартный синтаксис, предусмотренный операционной системой.

    Если файла с заданным именем не существует, ОС создает его автоматически. Если существует – данные в нем перезаписываются без сохранения предыдущих. В случае, когда есть необходимость в добавлении данных в конец текстового файла, вместо одного значка > необходимо указать два >>.

    Запуск из командной строки без интерпретатора

    В последних версиях операционной системы Windows добавлена возможность запускать скрипты на Python без ввода в командной строке названия программы-интерпретатора. То есть необходимо просто написать название файла с расширением.

    C:\devspace> hello.py Hello World! 

    Обусловлено это тем, что при клике на файле или запуске его из командной строки операционная система автоматически ищет связанное приложение и запускает его. Точно так же вы открываете файлы Word, просто кликнув на них курсором мыши.

    В Unix таким образом тоже можно запускать скрипты. Однако для этого в первую строку текстового файла с командами необходимо добавить текст #!/Usr/bin/env python. Он указывает на программу, с помощью которой производится запуск. А интерпретатор языка программирования расценивает строку как комментарий и пропускает её.

    Запуск скриптов из интерактивного режима

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

    Запустить скрипт из интерактивного режима можно командой:

    >>> import hello Hello World! 

    Обратите внимание, что эта команда срабатывает один раз за интерактивный сеанс. Поэтому, если внести изменения в файл со скриптом и перезапустить его этой командой, ничего не произойдет.

    Заключение

    Теперь вы знаете, что команды и скрипты Python можно запускать разными способами и в разных режимах. Это позволит вам выбрать нужный вариант для решения конкретной задачи, увеличить скорость своей работы, сделать ее продуктивной и гибкой.

    © Copyright 2014 — 2024 mkdev | Privacy Policy

    Статья Запускаем скрипт Python от имени администратора в Windows

    Иногда, для того чтобы выполнить скрипт на Python нам нужны права администратора. В противном случае, никаких предупреждений от операционной системы вы не увидите, просто будет запрещен доступ на выполнение тех или иных действий. Как пример, могу привести изменение/создание ключа реестра в статье «Изменение MAC-адреса в Linux и Windows с помощью Python». И тогда нужно будет запустить все еще раз, но уже с правами администратора или суперпользователя в Linux.

    000.jpg

    А как бы сделать так, чтобы скрипт сам проверял, запущена ли оболочка командной строки от имени администратора или нет, и если нет, перезапускал бы скрипт, но уже в оболочке, запущенной с правами администратора?

    Вот, что произойдет, если запустить скрипт из статьи указанной выше без прав администратора в Windows:

    Запуск скрипта в Windows

    001.png

    Запуск скрипта в Linux

    002.png

    Для Windows есть довольно простое решение. Давайте рассмотрим его подробнее.

    Для начала нам нужно будет импортировать несколько модулей:

    import ctypes import sys import psutil

    В том же случае, если интерпретатор заругается и скажет, что у вас не установлен модуль psutil, его надо установить с помощью команды:

    pip install psutil

    Теперь пишем код который выполнит проверку, запущена ли программа от имени админа или нет, как раз перед тем, как выполнять проверку на имя программы. В этом коде делается проверка, запущена ли оболочка с правами администратора. Если да, то проверка вернет True и запустить функция main(). В противном случае, перезапускается процесс с именем запускаемого файла и повышением прав до администратора. Если у вас не отключен UAC, то нужно будет подтвердить запуск.

    if ctypes.windll.shell32.IsUserAnAdmin(): if __name__ == "__main__": main() else: ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

    И все будет работать. Но, тут есть небольшой нюансик. Так как скрипт перезапускается, то остается открытым то окно из которого он запускался изначально. И это не есть хорошо. Можно его закрыть вручную, но если уж автоматизировать, то нужно двигаться дальше. После запука с правами админа нужно будет закрыть окно Командной строки или PowerShell, из которой и запускался изначально скрипт на Python.

    Здесь нужно «прибить» сам процесс. И логичнее всего сделать это получив его PID. Собственно PID это идентификатор процесса и является уникальным номером, который присваивается процессу на этапе выполнения. Возникает вопрос, а как этот PID получить? И вот тут на помощь нам придет модуль psutil.

    Давайте напишем небольшую функцию для примера, как работает код. Запускаем цикл, в котором пробегаемся по каждому экземпляру объекта созданного psutil и отфильтрованного по значениям pid и name. Где name, это имя запущенного процесса. Не заголовок программы, а именно имя процесса. Далее, в переменную sys_app получаем значение экземпляра с именем, которое обрезаем от лишних точек, так как имя процесса будет выглядеть, к примеру, «cmd.exe». Берем первый элемент получившегося списка и приводим его, на всякий случай к нижнему регистру.

    Затем делаем проверку, является ли полученное имя процесса PowerShell или Командной строкой. Так же можно добавить и проверку на то, является ли процесс Windows Terminal. И если это так, запускается процесс в котором получаем pid запущенного приложения и с помощью функции terminate() его завершаем.

    Если же запущенный процесс не подходит по нужные параметры, не делаем ничего и продолжаем выполнение цикла.

    def printing(): print('Тут мы чего-то печатаем, якобы с правами админа.') for app in psutil.process_iter(['pid', 'name']): sys_app = app.info.get('name').split('.')[0].lower() if 'powershell' in sys_app or 'cmd' in sys_app: try: psutil.Process(app.info.get('pid')).terminate() break except: continue input()

    Но, будьте внимательны. Данный код «прибьёт» первый процесс, который будет найден. То есть тот, что запущен позже всех. Если вы запустите скрипт в процессе, который был запущен ранее, то он «прибит» не будет. А если убрать прерывание break в цикле, в этом случае будут «прибиты» все процессы.

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

    Код со скриптом перезапуска от имени админа

    import ctypes import sys import psutil def printing(): print('Тут мы чего-то печатаем, якобы с правами админа.') for app in psutil.process_iter(['pid', 'name']): sys_app = app.info.get('name').split('.')[0].lower() if 'powershell' in sys_app or 'cmd' in sys_app: try: psutil.Process(app.info.get('pid')).terminate() break except: continue input() def main(): printing() if ctypes.windll.shell32.IsUserAnAdmin(): if __name__ == "__main__": main() else: ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

    Для Linux же подобных решений я не нашел. Наткнулся не небольшой модуль elevate. Но, как по мне, он работает несколько кривовато. Слишком много нужно произвести действий для того, чтобы запустить программу с его использованием. Если интересно, то вот код для его запуска:

    import os from elevate import elevate def is_root(): return os.getuid() == 0 print("before ", is_root()) elevate() print("after ", is_root())

    Тут собственно проверяется, запущен ли терминал под пользователем или рутом. И если под пользователем, о чем и сообщает возвращаемый код, запускается модуль elevate. По сути, он запускает запрос пароля в графическом режиме. Впрочем, этот режим можно отключить. Но, тут есть одна проблемка. Или даже не одна. Под пользователем root нужного модуля не найдется, так как он не установлен. Дальше, даже если вы установите этот модуль, вас ждет разочарование, так как перезапустившись в терминале под рутом вы получите сообщение, что скрипт, который вы запускаете, не найдет. И да, он не будет найден, потому, что вы запускали его от другого пользователя. И он лежит в другом месте. В этом случае нужно будет запускать скрипт с указанием полного пути к скрипту. Что очень неудобно. Проще, как на мой взгляд, просто выполнить тогда повышение привилегий до рута с помощью sudo su, а дальше уж злодействовать как пожелаете.

    Ну или есть еще одно решение. Можно установить terminator. Это оболочка, которая при запуске будет запрашивать у вас пароль суперпользователя. То есть, выполнять повышение привилегий. И уже в дальнейшем все команды будут от имени суперпользователя. Это, даже судя по его названию, эмулятор терминала суперпользователя.

    Как запустить python скрипт при старте Windows?

    dimonchik2013

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

    Rimush

    Илья @Rimush Автор вопроса

    Проблема в том что у меня там создается поток с бесконечным циклом.
    Так вот после открытия скрип только один раз проходит и закрывается.

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

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