2015-05-31 3 views
5

Я хотел бы найти способ получить дату и время календаря в час: минуты: секунды для моих пакетов, установленных через pip.Получить дату и время установки для пакетов, установленных через pip

Я хотел был бы иметь возможность увидеть что-то в виде: Месяц/День/Год - Час: Минута: Секунды для каждой упаковки.

Спасибо!

+1

Почему это важно, когда они были установлены? – jonrsharpe

+0

@ Ajay, я думаю, что он означает те, что он использовал 'pip install ' for. – IronManMark20

ответ

6

Это то, что вы ищете -

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 тоже, что довольно интересно. Я этого не знал.

+0

Это действительно круто. Спасибо за ответ. Проблема в том, что я обновил все мои установленные пакеты одновременно с Mon Apr 27 15:22:11 2015. «ctime» сейчас выбирает только то, что было. Я собираюсь проверить еще несколько опций os.path, чтобы увидеть, есть ли другой вариант времени. – wgwz

+0

Кажется, что единственными другими опциями являются 'os.path.getatime' или' getmtime', которые возвращают время последнего доступа и время последней модификации. Который не возвращает дату установки. Но все равно черт возьми! – wgwz

+0

@ wgwz К сожалению, проблема в том, что package.location предоставляет каталог, в котором установлен пакет, а не путь к самому пакету. Вот ответ, который работает лучше для меня: https://stackoverflow.com/a/44436961/2525237 – sunyata

0

Вы можете перечислить все места, которые держат пакеты, а затем просто перечислить все файлы в этих каталогах (вместе со временем создания):

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, которые вы можете предпочесть

Надежды это помогает!

Смежные вопросы