python不确定地确定系统PATH系统

Jas*_*ase 0 python operating-system path environment-variables python-2.7

我正在编写的程序需要确定系统上是否安装了某些其他程序.特别是命令行程序,用于生成哈希值.由于这些程序有很多可能的版本,我需要检查主要的程序(md5,漩涡等).

我正在编写的程序是系统无关的,并且意味着可以在任何win/mac/*nix上运行.

我希望能够快速搜索操作系统的标准$ PATH,但我不知道如何从系统到系统检索该信息($ PATH的内容).

这里的搜索仅显示了查找python路径或当前运行脚本的路径的内容.

有人会有解决方案,或者能够指出我跨平台解决方案吗?

fav*_*tti 5

这应该是跨平台的,除非我忽略了一些明显的东西:

Linux示例:

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ['PATH']
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)

MacOS示例:

Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ['PATH']
/Users/vlazarenko/bin:/Users/vlazarenko/SDK/QtSDK/Desktop/Qt/474/gcc/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

Windows示例:

Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ['PATH']
C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\Windows\system3
2;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0
\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\M
icrosoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DT
S\Binn\;C:\Program Files (x86)\Git\cmd;C:\Program Files (x86)\Microsoft SQL Serv
er\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual S
tudio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Se
rver\100\DTS\Binn\
>>>
Run Code Online (Sandbox Code Playgroud)

  • 我会在打印命令的末尾添加`.split(os.pathsep)`.给你一个很好的清单 (5认同)
  • 但请注意,Unix-y系统(包括OS X)上的`$ PATH`值通常会被用户在其shell配置文件中更改.并且,如果程序在OS X中的GUI环境下运行或作为守护程序运行,则`$ PATH`可能具有与从"login"shell运行时不同的值.关键是`$ PATH`的值可能会根据您的程序运行的上下文而有所不同.这对您的用例可能有用也可能不重要,但您应该记住它. (2认同)