anaconda - Conda 命令列出包的大小
问题描述
我想找出 conda 包的大小以删除巨大且很少使用的包。我应该使用哪个 conda 命令来找出包大小?
conda list
将列出包但不显示包大小。
我欢迎其他方法来找出包装尺寸。
我正在使用 Windows 10。
解决方案
挖掘 conda-meta
解决此问题的一种方法是挖掘环境conda-meta/
目录中每个包的 JSON 元数据文件。列出了两种尺寸:
- size - 包的总压缩 tarball 大小
- size_in_bytes - 包中单个解压缩文件的大小
由于您似乎对包的总大小感兴趣,所以让我们做更简单的size。这将让我们通过下载大小快速获得包的排名。
命令
## activate the environment of interest
conda activate foo
## search all the JSONs for '"size":'
grep '"size":' ${CONDA_PREFIX}/conda-meta/*.json |\
## sort result
sort -k3rn |\
## show only filename
sed 's/.*conda-meta\///g' |\
## print with columns
column -t
示例输出
jaxlib-0.1.67-py39h6e9494a_0.json: "size": 38576847,
scipy-1.6.3-py39h056f1c0_0.json: "size": 19495906,
python-3.9.4-h9133fd0_0_cpython.json: "size": 13160553,
libopenblas-0.3.15-openmp_h5e1b9a4_1.json: "size": 9163719,
numpy-1.20.3-py39h7eed0ac_1.json: "size": 5732039,
tk-8.6.10-hb0a8c7a_1.json: "size": 3420669,
openssl-1.1.1k-h0d85af4_0.json: "size": 1985060,
sqlite-3.35.5-h44b9ce1_0.json: "size": 1810221,
libgfortran5-9.3.0-h6c81a4c_22.json: "size": 1766473,
pip-21.1.2-pyhd8ed1ab_0.json: "size": 1147500,
libcxx-11.1.0-habf9029_0.json: "size": 1055976,
setuptools-49.6.0-py39h6e9494a_3.json: "size": 972968,
ncurses-6.2-h2e338ed_4.json: "size": 901840,
jax-0.2.14-pyhd8ed1ab_0.json: "size": 571585,
llvm-openmp-11.1.0-hda6cdc1_1.json: "size": 274368,
readline-8.1-h05e3726_0.json: "size": 272444,
xz-5.2.5-haf1e3a3_1.json: "size": 233058,
certifi-2021.5.30-py39h6e9494a_0.json: "size": 144599,
ca-certificates-2021.5.30-h033912b_0.json: "size": 139088,
tzdata-2021a-he74cb21_0.json: "size": 123802,
zlib-1.2.11-h7795811_1010.json: "size": 104180,
absl-py-0.12.0-pyhd8ed1ab_0.json: "size": 98565,
tqdm-4.61.0-pyhd8ed1ab_0.json: "size": 81513,
opt_einsum-3.3.0-pyhd8ed1ab_1.json: "size": 54494,
libffi-3.3-h046ec9c_2.json: "size": 46425,
wheel-0.36.2-pyhd3deb0d_0.json: "size": 31381,
python-flatbuffers-2.0-pyhd8ed1ab_0.json: "size": 28606,
libgfortran-5.0.0-9_3_0_h6c81a4c_22.json: "size": 19280,
six-1.16.0-pyh6c4a22f_0.json: "size": 14259,
libblas-3.9.0-9_openblas.json: "size": 11762,
libcblas-3.9.0-9_openblas.json: "size": 11671,
liblapack-3.9.0-9_openblas.json: "size": 11671,
python_abi-3.9-1_cp39.json: "size": 3921,
上面的输出显示jaxlib
的是最大的包,其次是scipy
,然后是python
解释器本身。在这种情况下,如果我想删除jaxlib
它也需要删除jax
.
笔记
我认为以上内容可以作为按大小对包裹进行排名的第一个近似值。这size_in_bytes
可能更准确,但要彻底,还需要考虑哪些单独的文件是硬链接的,因为这些文件实际上不应计入每个环境级别的包中。对于他们来说,每个系统只有一个副本,并且可以跨环境重复使用。
推荐阅读
- laravel-5 - 从 Laravel 的新记录中获取 ID
- jenkins - scheduled job problem with Parameterized Scheduler Plugin
- javascript - Javascript - Some errors in my LocalStorage script
- c++ - Red-Black Tree rebalancing crashes on tree rotation
- sql - 如何在 Apex Oracle 上创建协作工作环境?
- c++ - 内存引用重新绑定的可移植性
- python - 如何排除负数?
- c++ - Why does member initilizer invoke extra constructor call when moved?
- c# - Entity Framework Core does not respect Identity columns
- c# - 敌人在玩家位置射击