11

私が読んでいる本はsys.platform、python3で私を示しています。ウィンドウでは、これは正常に実行されますが、Linuxでは、カーネルがLinux3であっても、「Linux2」に戻り続けます。

platform.systemStackOverflowで検索を行うと、人々が言及しているのを見てきましたos.name。これらの最初のものはLinux/Windowsを教えてくれますが、バージョンは教えてくれません。後者はNT/Posixのようにテクノロジー名を教えてくれます。

経験豊富なPythonコーダーが使用する最も正確で好ましい方法はどれか少し混乱しています。「windows7」またはLinux3を入手することは可能ですか?

どうもありがとう。ps。まだstackoverflowに慣れていないので、うまくいけば私の質問を正しくフォーマットしました。

4

2 に答える 2

17

あなたが指摘したように、それは一貫性がないので、あなたは数に頼るべきではありません。実際には、Pythonがコンパイルされたシステム上のカーネルのメジャーバージョンが表示されます。

さらに、Python3.3では削除されました。

問題12326:Linuxでは、sys.platformにメジャーバージョンが含まれていません。Pythonのビルドに使用されたLinuxのバージョンに応じて、「linux2」や「linux3」ではなく、常に「linux」になりました。に置き換えます。古いバージョンのPythonをサポートする必要がない場合はsys.platform == 'linux2'sys.platform.startswith('linux')直接置き換えます。–Python3.3の新機能» Pythonコードの移植sys.platform == 'linux'

参照:sys.platform

したがって、システムがLinuxであるかどうかを確認するための好ましい方法はですsys.platform.startswith('linux')。PythonとLinuxのすべてのバージョンで動作します。

標準ライブラリでオペレーティングシステム名をより正確に見つける方法はないようです。

于 2012-05-03T10:42:25.250 に答える
0

こちらのドキュメントを確認してください。「linux2」の理由と、下位互換性のある方法での処理方法の両方が説明されています。

https://docs.python.org/2/library/sys.html

バージョン2.7.3で変更:多くのコードがsys.platform =='linux2'をチェックし、Linux 2.xと3.xの間に本質的な変更がないため、sys.platformは常に'linux2'に設定されます。 Linux3.xの場合。Python 3.3以降では、値は常に「linux」に設定されるため、常にstartswith...を使用することをお勧めします。

于 2014-12-02T10:38:22.123 に答える