"virtualenv" 中的库比系统库大得多
Libraries in "virtualenv" much bigger than system libraries
我通过 pew 使用 virtualenv(我认为这是一个很棒的工具),但我发现了一些奇怪的东西。
我安装了 scipy 系统端:
7,7 MiB [##########] /sparse
5,1 MiB [###### ] /special
5,1 MiB [###### ] /stats
5,0 MiB [###### ] /linalg
3,5 MiB [#### ] /spatial
3,0 MiB [### ] /optimize
2,5 MiB [### ] /signal
2,3 MiB [### ] /interpolate
2,3 MiB [## ] /misc
2,2 MiB [## ] /io
1,5 MiB [## ] /integrate
1,3 MiB [# ] /ndimage
1,0 MiB [# ] /fftpack
744,0 KiB [ ] /cluster
512,0 KiB [ ] /odr
464,0 KiB [ ] /constants
252,0 KiB [ ] /_lib
44,0 KiB [ ] /_build_utils
36,0 KiB [ ] /__pycache__
24,0 KiB [ ] HACKING.rst.txt
12,0 KiB [ ] THANKS.txt
8,0 KiB [ ] INSTALL.rst.txt
4,0 KiB [ ] __init__.py
4,0 KiB [ ] __config__.py
4,0 KiB [ ] LICENSE.txt
4,0 KiB [ ] setup.py
4,0 KiB [ ] BENTO_BUILD.txt
4,0 KiB [ ] version.py
4,0 KiB [ ] linalg.pxd
这是 scipy 安装的 virtualenv 端(相同 scipy 版本):
51,0 MiB [##########] /sparse
37,6 MiB [####### ] /.libs
12,9 MiB [## ] /linalg
10,6 MiB [## ] /spatial
9,7 MiB [# ] /special
6,0 MiB [# ] /interpolate
5,9 MiB [# ] /stats
5,1 MiB [# ] /optimize
4,2 MiB [ ] /signal
3,2 MiB [ ] /io
3,0 MiB [ ] /integrate
3,0 MiB [ ] /ndimage
2,3 MiB [ ] /misc
2,1 MiB [ ] /cluster
1,7 MiB [ ] /fftpack
884,0 KiB [ ] /odr
328,0 KiB [ ] /constants
204,0 KiB [ ] /_lib
32,0 KiB [ ] /_build_utils
24,0 KiB [ ] HACKING.rst.txt
20,0 KiB [ ] /__pycache__
12,0 KiB [ ] THANKS.txt
8,0 KiB [ ] INSTALL.rst.txt
4,0 KiB [ ] __init__.py
4,0 KiB [ ] LICENSE.txt
4,0 KiB [ ] setup.py
4,0 KiB [ ] __config__.py
4,0 KiB [ ] BENTO_BUILD.txt
4,0 KiB [ ] version.py
4,0 KiB [ ] pip-delete-this-directory.txt
4,0 KiB [ ] linalg.pxd
毋庸置疑,尺寸差异很大。它通常不会打扰我,但我正在尝试将一个可执行文件与 pyinstaller 捆绑在一起,而生成的可执行文件太大了,不切实际。
有人可以解释这样的区别吗?它不特定于 scipy,我也看到它用于 numpy,也许用于其他库。
编辑:
目录中的文件大小不同:
全系统:
3,1 MiB [##########] _sparsetools.cpython-35m-x86_64-linux-gnu.so
Virtualenv-wide:
38,5 MiB [##########] _sparsetools.cpython-35m-x86_64-linux-gnu.so
为 Scipy 分发的 Python wheels 中的共享库文件没有被删除,所以它们比你的包管理器安装的要大:
$ file _sparsetools.cpython-35m-x86_64-linux-gnu.so
_sparsetools.cpython-35m-x86_64-linux-gnu.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed7b8e00c558f234620423315fa9b53274393e72, not stripped
$ du -h _sparsetools.cpython-35m-x86_64-linux-gnu.so
39M _sparsetools.cpython-35m-x86_64-linux-gnu.so
如果strip it,文件大小缩小:
$ strip _sparsetools.cpython-35m-x86_64-linux-gnu.so
$ file _sparsetools.cpython-35m-x86_64-linux-gnu.so
_sparsetools.cpython-35m-x86_64-linux-gnu.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed7b8e00c558f234620423315fa9b53274393e72, stripped
$ du -h _sparsetools.cpython-35m-x86_64-linux-gnu.so
3.7M _sparsetools.cpython-35m-x86_64-linux-gnu.so
PyInstaller 可以使用 --strip
flag.
为您完成此操作
我通过 pew 使用 virtualenv(我认为这是一个很棒的工具),但我发现了一些奇怪的东西。
我安装了 scipy 系统端:
7,7 MiB [##########] /sparse
5,1 MiB [###### ] /special
5,1 MiB [###### ] /stats
5,0 MiB [###### ] /linalg
3,5 MiB [#### ] /spatial
3,0 MiB [### ] /optimize
2,5 MiB [### ] /signal
2,3 MiB [### ] /interpolate
2,3 MiB [## ] /misc
2,2 MiB [## ] /io
1,5 MiB [## ] /integrate
1,3 MiB [# ] /ndimage
1,0 MiB [# ] /fftpack
744,0 KiB [ ] /cluster
512,0 KiB [ ] /odr
464,0 KiB [ ] /constants
252,0 KiB [ ] /_lib
44,0 KiB [ ] /_build_utils
36,0 KiB [ ] /__pycache__
24,0 KiB [ ] HACKING.rst.txt
12,0 KiB [ ] THANKS.txt
8,0 KiB [ ] INSTALL.rst.txt
4,0 KiB [ ] __init__.py
4,0 KiB [ ] __config__.py
4,0 KiB [ ] LICENSE.txt
4,0 KiB [ ] setup.py
4,0 KiB [ ] BENTO_BUILD.txt
4,0 KiB [ ] version.py
4,0 KiB [ ] linalg.pxd
这是 scipy 安装的 virtualenv 端(相同 scipy 版本):
51,0 MiB [##########] /sparse
37,6 MiB [####### ] /.libs
12,9 MiB [## ] /linalg
10,6 MiB [## ] /spatial
9,7 MiB [# ] /special
6,0 MiB [# ] /interpolate
5,9 MiB [# ] /stats
5,1 MiB [# ] /optimize
4,2 MiB [ ] /signal
3,2 MiB [ ] /io
3,0 MiB [ ] /integrate
3,0 MiB [ ] /ndimage
2,3 MiB [ ] /misc
2,1 MiB [ ] /cluster
1,7 MiB [ ] /fftpack
884,0 KiB [ ] /odr
328,0 KiB [ ] /constants
204,0 KiB [ ] /_lib
32,0 KiB [ ] /_build_utils
24,0 KiB [ ] HACKING.rst.txt
20,0 KiB [ ] /__pycache__
12,0 KiB [ ] THANKS.txt
8,0 KiB [ ] INSTALL.rst.txt
4,0 KiB [ ] __init__.py
4,0 KiB [ ] LICENSE.txt
4,0 KiB [ ] setup.py
4,0 KiB [ ] __config__.py
4,0 KiB [ ] BENTO_BUILD.txt
4,0 KiB [ ] version.py
4,0 KiB [ ] pip-delete-this-directory.txt
4,0 KiB [ ] linalg.pxd
毋庸置疑,尺寸差异很大。它通常不会打扰我,但我正在尝试将一个可执行文件与 pyinstaller 捆绑在一起,而生成的可执行文件太大了,不切实际。
有人可以解释这样的区别吗?它不特定于 scipy,我也看到它用于 numpy,也许用于其他库。
编辑:
目录中的文件大小不同:
全系统:
3,1 MiB [##########] _sparsetools.cpython-35m-x86_64-linux-gnu.so
Virtualenv-wide:
38,5 MiB [##########] _sparsetools.cpython-35m-x86_64-linux-gnu.so
为 Scipy 分发的 Python wheels 中的共享库文件没有被删除,所以它们比你的包管理器安装的要大:
$ file _sparsetools.cpython-35m-x86_64-linux-gnu.so
_sparsetools.cpython-35m-x86_64-linux-gnu.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed7b8e00c558f234620423315fa9b53274393e72, not stripped
$ du -h _sparsetools.cpython-35m-x86_64-linux-gnu.so
39M _sparsetools.cpython-35m-x86_64-linux-gnu.so
如果strip it,文件大小缩小:
$ strip _sparsetools.cpython-35m-x86_64-linux-gnu.so
$ file _sparsetools.cpython-35m-x86_64-linux-gnu.so
_sparsetools.cpython-35m-x86_64-linux-gnu.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=ed7b8e00c558f234620423315fa9b53274393e72, stripped
$ du -h _sparsetools.cpython-35m-x86_64-linux-gnu.so
3.7M _sparsetools.cpython-35m-x86_64-linux-gnu.so
PyInstaller 可以使用 --strip
flag.