Что мне нужно посмотреть, чтобы увидеть, нахожусь ли я на Windows или Unix и т. Д.?
python
cross-platform
platform-specific
platform-agnostic
Марк Харрисон
источник
источник
Ответы:
Вывод
platform.system()
следующий:Linux
Darwin
Windows
Смотрите:
platform
- Доступ к данным идентификации базовой платформыисточник
platform
болееsys.platform
?platform.system()
возвращается"Windows"
вместо"win32"
.sys.platform
также содержится"linux2"
на старых версиях Python, в то время как он содержит только"linux"
на более новых.platform.system()
всегда вернулся только что"Linux"
.os.uname()
существует только для систем Unix. Документы Python 3: docs.python.org/3/library/os.htmlAvailability: recent flavors of Unix.
Черт - Бренди победил меня, но это не значит, что я не могу предоставить вам результаты системы для Vista!
... и я не могу поверить, что никто еще не опубликовал для Windows 10:
источник
platform.release()
'7'
platform.release()
свою Windows 10 , и она определенно просто дала мне'8'
. Может быть, я установил Python перед обновлением, но на самом деле ??Для записи вот результаты на Mac:
источник
platform.release()
возвращает'19.2.0'
Пример кода для разграничения ОС, использующих python:
источник
Вы также можете использовать,
sys.platform
если вы уже импортировали,sys
и вы не хотите импортировать другой модульисточник
Если вы хотите, чтобы данные читались пользователем, но все еще были подробными, вы можете использовать platform.platform ()
Вот несколько возможных звонков, которые вы можете сделать, чтобы определить, где вы находитесь
Выходные данные этого скрипта работали на нескольких разных системах (Linux, Windows, Solaris, MacOS), а архитектуры (x86, x64, Itanium, power pc, sparc) доступны здесь: https://github.com/hpcugent/easybuild/ вики / OS_flavor_name_version
Сервер Ubuntu 12.04, например, дает:
источник
DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
Короткий рассказ
Использование
platform.system()
. Она возвращаетWindows
,Linux
илиDarwin
(для OSX).Длинная история
Есть 3 способа получить ОС в Python, каждый со своими плюсами и минусами:
Способ 1
Как это работает ( источник ): Внутренне он вызывает API-интерфейсы ОС, чтобы получить имя ОС в соответствии с определением ОС. Смотрите здесь для различных значений ОС.
Pro: Нет магии, низкий уровень.
Против: зависит от версии ОС, поэтому лучше не использовать напрямую.
Способ 2
Как это работает ( источник ): Внутренне он проверяет, есть ли в python модули для ОС, называемые posix или nt.
Pro: просто проверить, работает ли posix OS
Против: нет различий между Linux и OSX.
Способ 3
Как это работает ( источник ): Внутренне он в конечном итоге вызовет внутренние API-интерфейсы ОС, получит имя для конкретной версии ОС, такое как «win32» или «win16» или «linux1», а затем нормализуется к более общим именам, таким как «Windows» или «Linux», или «Дарвин», применяя несколько эвристик.
Pro: Лучший портативный способ для Windows, OSX и Linux.
Против: Python люди должны поддерживать эвристику нормализации в актуальном состоянии.
Резюме
platform.system()
.posix
илиnt
затем использоватьos.name
.sys.platform
.источник
Как насчет нового ответа:
Это был бы вывод, если бы я использовал MACOS
источник
Я начал более систематический список значений, которые вы можете ожидать, используя различные модули (не стесняйтесь редактировать и добавлять свою систему):
Linux (64 бит) + WSL
sys.platform
версия ядра, напримерlinux2
, все остальное остается идентичнымplatform.architecture() = ('64bit', 'ELF')
ОКНА (64 бит)
(с 32-битным столбцом в 32-битной подсистеме)
Некоторые замечания:
distutils.util.get_platform()
что идентично `sysconfig.get_platformЧтобы сравнить с вашей системой, просто запустите этот скрипт (и, пожалуйста, добавьте результаты здесь, если не хватает :)
источник
Я использую инструмент WLST, который поставляется с weblogic, и он не реализует пакет платформы.
Помимо исправления системы javaos.py ( проблема с os.system () в Windows 2003 с jdk1.5 ) (что я не могу сделать, я должен использовать weblogic из коробки), это то, что я использую:
источник
/usr/bin/python3.2
источник
Для Jython единственный способ получить имя Os я нашел это проверить
os.name
Java свойство (пробовал сsys
,os
иplatform
модули для Jython 2.5.3 на WinXP):источник
Интересные результаты на Windows 8:
Изменить: это ошибка
источник
Смотрите, если вы на Windows , с Cygwin , где
os.name
находитсяposix
.источник
в том же духе....
источник
Если вы не ищете версию ядра и т. Д., Но ищете дистрибутив Linux, вы можете использовать следующее
в python2.6 +
в python2.4
Очевидно, это будет работать, только если вы запускаете это на Linux. Если вы хотите иметь более общий сценарий на разных платформах, вы можете смешать его с примерами кода, приведенными в других ответах.
источник
попробуй это:
и вы можете сделать это:
источник
os.uname()
недоступно в Windows: docs.python.org/2/library/os.html#os.uname Наличие: последниеПроверьте доступные тесты с модульной платформой и распечатайте ответ для вашей системы:
источник
Вы также можете использовать только модуль платформы без импорта модуля OS для получения всей информации.
Хорошая и аккуратная компоновка для целей отчетности может быть достигнута с помощью этой строки:
Это дает такой вывод:
Чего обычно не хватает, так это версии операционной системы, но вы должны знать, используете ли вы windows, linux или mac, независимо от платформы, используйте этот тест:
источник
Я знаю, что это старый вопрос, но я считаю, что мой ответ может быть полезен для некоторых людей, которые ищут простой и понятный способ понимания ОС в своем коде. Проверено на python3.7
источник
Если вы используете MacOS X и запускаете,
platform.system()
вы получаете darwin, потому что macOS X построен на Apple Darwin OS. Darwin является ядром macOS X и по сути является macOS X без графического интерфейса.источник
Это решение работает как для, так
python
и дляjython
.модуль os_identify.py :
Используйте как это:
источник
Как насчет простой реализации Enum, подобной следующей? Нет необходимости во внешних библиотеках!
Просто вы можете получить доступ с помощью значения Enum
PS это python3
источник
Вы можете посмотреть на код,
pyOSinfo
который входит в пакет pip-date , чтобы получить наиболее актуальную информацию об ОС, как видно из вашего дистрибутива Python.Одна из наиболее распространенных причин, по которой люди хотят проверить свою ОС, - совместимость терминала и наличие определенных системных команд. К сожалению, успех этой проверки в некоторой степени зависит от вашей установки на Python и ОС. Например,
uname
недоступно в большинстве пакетов Python для Windows. Вышеприведенная программа на python покажет вывод наиболее часто используемых встроенных функций, уже предоставленныхos, sys, platform, site
.Так что лучший способ получить только необходимый код - это в качестве примера. (Думаю, я мог бы просто вставить это здесь, но это не было бы политкорректно.)
источник
Я опаздываю к игре, но, на всякий случай, кому-то это нужно, эту функцию я использую для корректировки своего кода, чтобы он работал на Windows, Linux и MacO:
источник