2016-08-23 1 views
1

pip install module_nameを使用してモジュールをインストールすると、ホイールまたはパッケージのサイズを確認できます。Pythonモジュールのサイズを知るには?

ですから、各モジュールのサイズだけを知ることはできますか?

このようなものです。

import pip 

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

配布物の推定サイズを知りたいので、それらをwinpython配布から削除することができます。

+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) 

あなたはvirtualenvのであれば、あなたはより多くを取得するための最初のオプションを使用することができます

get_installed_distributions(LOCAL_ONLY = Trueの場合、スキップ=( 'のpython'、 'wsgiref'、 'argparseを') 、include_editables = True、editables_only = False、user_only = False) インストールされているDistributionオブジェクトのリストを返します。

local_onlyがTrue(デフォルト)の場合、現在のvirtualenvにローカルである を返します(virtualenv内にある場合)。

+0

これは、インストールされたサイズ*を計算します(ただし、インストールされているスクリプトまたはデータファイルは省略します)。私は* OPがディストリビューションサイズ(サンプルコードでは 'distribution_size_only')を取得したいと思っています。 –

+0

@Martijn知っているPieters。多分、はい、Scripting.FileSystemObjectを待ってみましょう。とにかくそれを行うことはできますが、それほど高速にはなりません。ディストリビューションについて考えているなら、インストールされるものを全面的に見るならば、すぐにインストールされるすべての依存関係も必要です。しかし、わかっているように、モジュール全体をコピーしてプロジェクトカタログに貼り付け、そこからインポートすることができます。我々はそれをインストールする必要はありません、PythonモジュールはPythonモジュールです。すべての依存関係を持つ必要があります。 – 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

関連する問題