我没有太多空间,我很想安装python库。
我想知道安装之前python库的大小(只是为了知道如果我没有足够的空间请求多少空间)。
有没有办法做到这一点,例如使用pip
?
答案 0 :(得分:3)
据我所知,这不可能使用pip
。但是如果包托管在PyPI上,您可以将/json
附加到URL以查看更多详细信息,包括文件大小。
例如,访问https://pypi.python.org/pypi/pip/json并查看releases
项中的条目。每个版本的size
告诉您下载量有多大。
请注意,这会告诉您下载大小,而不是安装后的大小(因为程序包可能会在解压缩归档后请求安装的其他依赖项,等等)。因此,在安装之前,您的问题可能很难回答。
答案 1 :(得分:0)
这是我目前使用的脚本
(基于来自 How to see pip package sizes installed? 的优秀的包裹遍历代码)
创建一个名为 tool-size.py
的 python 脚本
#!/usr/bin/env python
import os
import pkg_resources
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
def calc_installed_sizes():
dists = [d for d in pkg_resources.working_set]
total_size = 0
print (f"Size of Dependencies")
print("-"*40)
for dist in dists:
# ignore pre-installed pip and setuptools
if dist.project_name in ["pip", "setuptools"]:
continue
try:
path = os.path.join(dist.location, dist.project_name)
size = calc_container(path)
total_size += size
if size/1000 > 1.0:
print (f"{dist}: {size/1000} KB")
print("-"*40)
except OSError:
'{} no longer exists'.format(dist.project_name)
print (f"Total Size (including dependencies): {total_size/1000} KB")
if __name__ == "__main__":
calc_installed_sizes()
创建一个名为 tool-size.sh
的 bash 脚本
#!/usr/bin/env bash
# uncomment to to debug
# set -x
rm -rf ~/.virtualenvs/tool-size-tester
python -m venv ~/.virtualenvs/tool-size-tester
source ~/.virtualenvs/tool-size-tester/Scripts/activate
pip install -q $1
python tool-size.py
deactivate
用你想要获取大小的包运行脚本
tool-size.sh xxx
说 truffleHog3
$ ./tool-size.sh truffleHog3
Size of Dependencies
----------------------------------------
truffleHog3 2.0.6: 56.46 KB
----------------------------------------
smmap 4.0.0: 108.808 KB
----------------------------------------
MarkupSafe 2.0.1: 40.911 KB
----------------------------------------
Jinja2 3.0.1: 917.551 KB
----------------------------------------
gitdb 4.0.7: 320.08 KB
----------------------------------------
Total Size (including dependencies): 1443.81 KB
答案 2 :(得分:0)
如果您有 requirements.txt
文件,请使用此脚本:
#!/bin/bash
# by rubo77: https://stackoverflow.com/a/68278901/1069083
mkdir -p /tmp/pip-size
for i in $(pip-sync -n requirements.txt|tail -n +2); do
echo -ne "$i:\t"
wget --quiet -O /tmp/pip-size/$i https://pypi.org/pypi/$i/json
cat /tmp/pip-size/$i | jq 'last(.releases[])'[].size | paste -sd+ | bc > /tmp/pip-size/$i.size
cat /tmp/pip-size/$i.size | awk '{$1=$1/1024/1024; print $1,"MB";}'
done
echo -e "--------\ntotal:"
cat /tmp/pip-size/*.size | paste -sd+ | bc | awk '{$1=$1/1024/1024; print $1,"MB";}';
输出示例:
ninja: 1.4366 MB
numpy: 120.735 MB
opencv-python: 724.788 MB
pillow: 137.695 MB
scikit-image: 7.46707 MB
torch: 4772.73 MB
torchvision: 153.842 MB
--------
total:
5918.69 MB