获取虚拟环境python包安装日期的方法

获取虚拟环境python包安装日期的方法,python,pip,packages,Python,Pip,Packages,我正在寻找一种方法,在VirtualNV中获取python包的安装日期,,但不使用python脚本。我不知道是否有像freeze这样的工具(至少)能给我这些信息 有什么想法吗?谢谢 我们可以用时间做这件事 import subprocess import time import os package_name = 'requests' package_param = subprocess.check_output( ['pip', 'show', package_na

我正在寻找一种方法,在VirtualNV中获取python包的安装日期,,但不使用python脚本。我不知道是否有像
freeze
这样的工具(至少)能给我这些信息

有什么想法吗?谢谢

我们可以用时间做这件事

import subprocess
import time
import os

package_name = 'requests'

package_param = subprocess.check_output(
            ['pip', 'show', package_name], stderr=subprocess.STDOUT)
# subprocess will return a string of type `bytes` with 
# name, version, location, and we need to get Location, like so:

# Name: requests
# Version: 1.4.5
# another params
# Location: /my/env/lib/python2.7/site-packages

# here we decode pack, because this is a bytes, and spltit by '\n'
# go through this list of strings and check if we have `Location` in string
# if we have location we get this location and with `oc.path.getctime()`
# get the time when this package was created
for param in package_param.decode().split('\n'):
    if 'Location' in param:
        loc = param.split(':')[1].strip()
        print("{}: {}".format(package_name, time.ctime(os.path.getctime(loc))))
输出

requests: Fri Jun 15 10:03:50 2018

实现相同功能的方法之一是检查站点包中的包目录修改日期

如果您使用的是linux环境,则可以运行以下命令:

检查活动python环境目录

$ which python
示例输出:
/[virtualenv路径]/bin/python

列出所有带有格式化日期的软件包

$ cd /[path-to-virtualenv]/lib/python-[version-number]/site-packages
$ ls -al --time-style="+%Y-%m-%d"
示例输出:
drwxrwxr-x 19[用户][用户][文件大小][年-月-日][软件包名称]

要过滤带有特定日期的软件包,您可以使用grep

$ ls -al --time-style="+%Y-%m-%d" | grep '2021-03-14'

预期输出:它将列出2020-03-14上修改的所有目录/文件

我正在寻找一个没有python脚本的解决方案(至少目前是这样)。哦,对不起,我看不到这一点,但如果您需要它,这个脚本可以工作。这非常好,但对于所有安装的软件包来说都很好。有没有一种简单的方法可以从python中检索所有已安装的包?(例如,如果脚本接受带有列表的bash管道,这将是直接的。)