【问题标题】:Get date and time of installation for packages installed via pip获取通过 pip 安装的软件包的安装日期和时间
【发布时间】:2015-08-14 01:39:59
【问题描述】:

我想找到一种方法来获取我通过 pip 安装的包的小时:分钟:秒格式的日历日期和时间。

我希望能够在输出中看到如下内容: 月/日/年 - 时:分:秒 对于每个包。

谢谢!

【问题讨论】:

  • 安装它们时为什么重要?
  • @Ajay,我认为他的意思是那些他使用pip install <package> 的人。
  • pip install pip-date。然后运行pip-date

标签: python package pip


【解决方案1】:

这是你要找的 -

import pip
import os
import time

In [139]: for package in pip.get_installed_distributions():
   .....:          print "%s: %s" % (package, time.ctime(os.path.getctime(package.location)))
   .....:     
pyudev 0.17.dev20150317: Tue Mar 17 12:02:58 2015
python-magic 0.4.6: Fri Mar 20 14:07:59 2015
runipy 0.1.0: Fri Oct 31 01:49:34 2014

代码来源 - https://stackoverflow.com/a/24736563/170005

import pip 也可以,这很有趣。我不知道这个。

【讨论】:

  • 这真的很酷。感谢您的回答。问题是我在 2015 年 4 月 27 日星期一 15:22:11 时同时更新了所有已安装的软件包。“ctime”目前只更新了它。我将检查更多的 os.path 选项,看看是否还有其他时间选项。
  • 似乎唯一的其他选项是os.path.getatimegetmtime,它们返回最后访问时间和最后修改时间。不返回安装日期。但仍然该死的接近!
  • @wgwz 不幸的是,问题是 package.location 给出了安装包的目录,而不是包本身的路径。这是一个更适合我的答案:stackoverflow.com/a/44436961/2525237
  • 有没有办法在 python 之外做同样的事情?使用freeze 之类的工具,但可以检索更多信息?
【解决方案2】:

您可以列出所有保存包的位置,然后只列出这些目录中的所有文件(连同创建时间):

import pip
import os
import time

pkg_location_dir_strset = set()

for pip_pkg in pip.get_installed_distributions():
    if pip_pkg.location not in pkg_location_dir_strset:
        pkg_location_dir_strset.add(pip_pkg.location)

for pkg_location_dir_str in pkg_location_dir_strset:
    print("")
    print("Directory: " + pkg_location_dir_str)
    for file_or_dir in os.listdir(pkg_location_dir_str):
        # print("file_or_dir = " + file_or_dir)
        file_or_dir_path = os.path.join(pkg_location_dir_str, file_or_dir)
        print(
            os.path.basename(file_or_dir).ljust(50)
            + " " + time.ctime(os.path.getctime(file_or_dir_path))
        )

还有check out this answer for an alternative solution,你可能更喜欢

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    获得的不仅仅是日期和时间,还包括安装方法,使用pip-date

    【讨论】:

      【解决方案4】:

      从版本 10.0.0 开始,get_installed_distributions() 与之前的位置相比是 not accessible

      虽然在程序中使用 pip 作为模块是not recommended,但有时——比如这个问题——它会让事情变得更容易!

      所以,我搜索了一下图书​​馆,发现它藏在哪里 :) 这是@fixxxer 根据新 API 的答案并与 Python 3.x 兼容:

      import os
      import time
      from pip._internal.utils.misc import get_installed_distributions
      
      for package in get_installed_distributions():
          print ("{}\t{}".format(time.ctime(os.path.getctime(package.location)), package))
      

      【讨论】:

      • 这适用于 python 2.7.17,但请注意示例代码在打印行的末尾有一个无关的“a”。
      • 这没有给出安装日期。
      • 这没有给出安装日期时间,这段代码给出了我们执行for循环的时间
      【解决方案5】:

      pip-date 就像一个魅力,添加到它以防你想以文本文件的形式获得该输出

      pip-date >packagelist.txt
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请编辑以添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到更多关于如何写出好的答案的信息。
      【解决方案6】:

      Pip 还没有为您提供该选项。无需编码即可解决此问题的简单方法是在计算机上找到已安装软件包的路径,并检查文件夹的创建/修改日期和时间。标准路径通常是这样的:

       Users\[whatever_username]\AppData\Roaming\Python\Python[3.x]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        • 1970-01-01
        • 2020-05-19
        • 2017-01-25
        • 2013-07-21
        • 2016-01-26
        相关资源
        最近更新 更多