【问题标题】:python determine the system PATH system agnosticly [duplicate]python不可知地确定系统PATH系统[重复]
【发布时间】:2013-01-12 13:00:07
【问题描述】:

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

我正在编写的程序与系统无关,可以在任何 win/mac/*nix 上运行。

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

在此处搜索仅找到有关查找 python 路径或当前运行脚本的路径的材料。

有人有解决方案吗,或者可以指出我的跨平台解决方案吗?

【问题讨论】:

  • @Mike:他不是在询问 python 路径..
  • 迈克,PYTHONPATHPATH 不同。简化后,PYTHONPATH 添加到 Python 在导入时查找模块的位置,而PATH 是用于搜索可执行文件的操作系统位置列表。
  • @Mike - 不是真的,python 路径是一个sys.path 变量,而不是os.environ['PYTHONPATH'],在某些极端情况下可能是未定义的。另一方面,sys.path 可能包含不在您的PYTHONPATH 上的路径:)

标签: python path python-2.7 operating-system environment-variables


【解决方案1】:

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

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

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

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\
>>>

【讨论】:

  • 我会将.split(os.pathsep) 添加到打印命令的末尾。给你一个不错的清单
  • 那么在所有三个主要系统上,变量实际上是 PATH?我不确定是否是这种情况,这就是我没有走这条路的原因。 (无法使用 Mac 并且 10 年来一直免费使用 Windows...)
  • Mac 肯定是 $PATH,我的例子来自 mac :) Windows 是 %PATH%,让我快速测试一下。
  • 但请注意,在包括 OS X 在内的 Unix-y 系统上,$PATH 的值通常会被用户在其 shell 配置文件中更改。而且,如果程序在 OS X 中的 GUI 环境下运行或作为守护程序运行,$PATH 的值可能与从“登录”shell 运行时的值不同。关键是$PATH 的值可能会根据您的程序运行的上下文而有所不同。这对您的用例可能重要也可能不重要,但您应该牢记这一点。
猜你喜欢
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 2022-01-10
  • 2010-10-31
  • 2012-03-01
  • 1970-01-01
相关资源
最近更新 更多