获取通过 pip 安装的软件包的安装日期和时间
Posted
技术标签:
【中文标题】获取通过 pip 安装的软件包的安装日期和时间【英文标题】:Get date and time of installation for packages installed via pip 【发布时间】:2015-08-14 01:39:59 【问题描述】:我想找到一种方法来获取我通过 pip 安装的包的小时:分钟:秒格式的日历日期和时间。
我希望能够在输出中看到如下内容: 月/日/年 - 时:分:秒 对于每个包。
谢谢!
【问题讨论】:
安装它们时为什么重要? @Ajay,我认为他的意思是那些他使用pip install <package>
的人。
pip install pip-date
。然后运行pip-date
。
【参考方案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://***.com/a/24736563/170005
import pip
也可以,这很有趣。我不知道这个。
【讨论】:
这真的很酷。感谢您的回答。问题是我在 2015 年 4 月 27 日星期一 15:22:11 时同时更新了所有已安装的软件包。“ctime”目前只更新了它。我将检查更多的 os.path 选项,看看是否还有其他时间选项。 似乎唯一的其他选项是os.path.getatime
或getmtime
,它们返回最后访问时间和最后修改时间。不返回安装日期。但仍然该死的接近!
@wgwz 不幸的是,问题是 package.location 给出了安装包的目录,而不是包本身的路径。这是一个更适合我的答案:***.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]
【讨论】:
以上是关于获取通过 pip 安装的软件包的安装日期和时间的主要内容,如果未能解决你的问题,请参考以下文章
python 根据照片的拍摄日期对这样的照片进行分类:your_path / 2014/1/1你必须安装exifread:pip install exifread