【问题标题】:Python Installation Location (Windows)Python 安装位置 (Windows)
【发布时间】:2013-08-10 15:44:00
【问题描述】:

我需要看看电脑上是否安装了 Python。

我的具体问题是我正在分发一个带有自己的解释器 + 标准库的程序(最终用户可能没有 Python)。在安装过程中,我可以选择使用用户自己安装的 Python 解释器 + 库(如果他们有的话)。但是,我需要那个位置。我可以要求用户手动找到它,但我希望有一种自动方式。

由于我的安装程序使用我包含的解释器,sys.prefix 指的是包含的解释器(我知道这一点是因为我尝试过,我安装了 Python 2.7 和 3.3)。

我也尝试使用subprocess.call:subprocess.call(['py', '-c', '"import sys; print sys.prefix"']),如果有的话,它会使用标准的 Python 解释器,但我不确定如何捕获这个输出。

那么,有没有其他方法可以查明用户电脑上是否安装了默认的 Python 版本以及安装在哪里?

【问题讨论】:

  • 如果它是一个程序,你为什么要允许他们使用不同的python,而不是它打包的那个?如果它只是一个库,那你为什么要用解释器打包它?您如何打包您的程序以进行分发?
  • @JoranBeasley 它不仅仅适用于 Python 用户,因此它不仅仅是一个库。这是一个程序,但如果用户有 Python 2.7 版本,我将删除包含的安装并使用他们安装的一个(在两个解释器 + 库中没有意义)。

标签: python windows


【解决方案1】:

实际上,根据我的其他答案,查找 Python 安装目录的更好方法可能是检查 Windows 注册表,因为 Python 安装程序会在其中放置一些信息。

看看this answerthis Python module

【讨论】:

    【解决方案2】:

    有些用户可能已经将他们的本地 Python 目录放入系统的 PATH 环境变量中,有些甚至可能设置了 PYTHONPATH 环境变量。

    您可以尝试以下方法:

    import os
    
    if "python" in os.environ["PATH"].lower():
        # Confirm that the Python executable actually is there
    
    if "PYTHONPATH" in os.environ.keys():
        # Same as in the last if...
    

    至于subprocess.call(...),将stdout 参数设置为传递给文件对象的东西,然后只需.read() 给您提供的文件对象以查看调用的输出。

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多