2016-08-23 5 views
1

pip install module_name을 사용하여 모듈을 설치할 때 휠 또는 패키지 크기를 볼 수 있습니다.파이썬 모듈의 크기를 아는 방법?

그래서 각 모듈의 크기를 알 수 있습니까?

이와 비슷한 내용입니다.

import pip 

for dist in pip.get_installed_distributions(): 
    print(distribution_size_only of dist) 

배포판의 예상 크기를 알고 싶습니다. 따라서이를 배포판에서 제거 할 수 있습니다. 당신이 VIRTUALENV에 있다면

+1

는 '크기'를 정의합니다. 'pip'는 압축 된 아카이브가 얼마나 큰지를 보여줍니다. 설치 크기는 컴파일러에 따라 달라 지거나 압축 된 데이터 파일이 포함되어있는 경우 등에 따라 크게 달라집니다. –

+0

여하튼 배포판 크기는 설치 후 메타 데이터로 저장되지 않습니다. 해당 버전의 아카이브 크기에 대한 원래 다운로드 위치를 쿼리해야합니다. –

+0

또한 종속성은 어떻습니까? 그것들은 계산에 포함되어야합니까? 여기서 최종 목표는 무엇입니까? 현재 설정을 재생하려면 얼마만큼 다운로드해야합니까? –

답변

1
import os 
import pip 


def calc_container(path): 
    total_size = 0 
    for dirpath, dirnames, filenames in os.walk(path): 
     for f in filenames: 
      fp = os.path.join(dirpath, f) 
      total_size += os.path.getsize(fp) 
    return total_size 


for dist in pip.get_installed_distributions(): 
    try: 
     path = os.path.join(dist.location, dist.project_name) 
     size = calc_container(path) 
     if size: 
      print path 
      print size 
    except OSError: 
     '{} no longer exists'.format(dist.project_name) 

, 당신은 더 얻을 첫 번째 옵션을 사용할 수 있습니다

get_installed_distributions를 (을 local_only = 사실, = ('파이썬', 'wsgiref', 'argparse을'건너 뛰기) , include_editables = True, editables_only = False, user_only = False) 설치된 Distribution 개체의 목록을 반환합니다.

local_only이 True (기본값) 인 경우, virtualenv에있는 경우 현재의 virtualenv에 로컬 인 만 반환합니다.

+0

이것은 설치된 크기 *를 계산합니다 (그러나 설치된 스크립트 나 데이터 파일은 생략 함). 나는 * OP가 배포판 크기를 얻길 원한다고 생각한다. (샘플 코드에서'distribution_size_only'). –

+0

@MartijnPieters 알고 있습니다. 어쩌면 그렇습니다. Scripting.FileSystemObject 메모를 기다려 봅시다. 어쨌든 그렇게 할 수는 있지만 그렇게 빨리하지는 않을 것입니다. 왜냐하면 우리가 배포본에 대해 생각하고 있다면, 설치할 대상을 전체적으로 파악할 수 있다면 모든 의존성을 한 번에 설치할 필요가 있기 때문입니다. 하지만 아시다시피 전체 모듈을 복사하여 프로젝트 카탈로그에 붙여넣고 가져올 수 있습니다. 우리는 그것을 설치할 필요가 없습니다, 파이썬 모듈은 파이썬 모듈입니다. 모든 종속성 만 있으면됩니다. – turkus

+0

감사. 나는 그것을 조사 할 것이다. – Rahul

0

나는이 모호 알고 있지만, 이것은 내가 원하는 무엇인가 :

import re 
import requests 
import json 
def regexsubstring(s, p): 
    p = re.compile(p, flags=re.IGNORECASE) 
    return p.search(s) 

def wf(data,path,mode): 
    with open(path, mode, encoding='utf-8') as out: 
     out.write(data) 
     return 

import pip 
dists_size_info = {} 

for dist in pip.get_installed_distributions(): 
    url = "https://pypi.python.org/pypi/" + dist.key + "/" + dist.version 
    r = requests.get(url) 
    size = regexsubstring(r.text, """<td style="text-align: right;">(\w+)</td>""").group(1) 
    dists_size_info[dist.key] = [dist.version, size] 
    print(dists_size_info) 
wf(json.dumps(dists_size_info),'dists_size_info.txt','w') 

하거나에서 목록을 얻을 수 있습니다

http://hastebin.com/qiconesoje.apache

관련 문제