(Dec-15-2017, 03:47 AM)issac_n Wrote: [ -> ]how I code it for smaller size? i am using pyinstaller.
You using pandas that can have a lot of dependencies.
Like is using Numpy+MKL(it can use 200mb) more that may not be need.
So just install numpy alone.
To have control over dependencies must use virtual environment.
I have tested with all your import and my file size with all for one .exe file is
23.4MB
.
Here is the whole setup,i use virtual environment that's build into 3.6.
There are basic dependencies that pandas need.
Dependencies:
- setuptools
- NumPy: 1.9.0 or higher
- python-dateutil: 1.5 or higher
- pytz: Needed for time zone support
Setup virtual environment,i use
cmder but is just the same commands in cmd:
# Make
E:\1py_div
λ python -m venv build_env
# cd in
E:\1py_div
λ cd build_env
# Activate
E:\1py_div\build_env
λ E:\1py_div\build_env\Scripts\Activate
(build_env) E:\1py_div\build_env
# Install pyinstaller
λ pip install pyinstaller
Collecting pyinstaller
Requirement already satisfied: setuptools in e:\1py_div\build_env\lib\site-packages (from pyinstaller)
Collecting future (from pyinstaller)
Collecting macholib>=1.8 (from pyinstaller)
Downloading macholib-1.9-py2.py3-none-any.whl (40kB)
100% |████████████████████████████████| 40kB 998kB/s
Collecting pefile>=2017.8.1 (from pyinstaller)
Collecting altgraph>=0.15 (from macholib>=1.8->pyinstaller)
Downloading altgraph-0.15-py2.py3-none-any.whl
Installing collected packages: future, altgraph, macholib, pefile, pyinstaller
Successfully installed altgraph-0.15 future-0.16.0 macholib-1.9 pefile-2017.11.5 pyinstaller-3.3
So now have environment with pyinstaller.
Installing dependencies:
(build_env) E:\1py_div\build_env
λ pip install numpy
Collecting numpy
Using cached numpy-1.13.3-2-cp36-none-win32.whl
Installing collected packages: numpy
Successfully installed numpy-1.13.3
(build_env) E:\1py_div\build_env
λ pip install python-dateutil pytz setuptools
Collecting python-dateutil
Using cached python_dateutil-2.6.1-py2.py3-none-any.whl
Collecting pytz
Using cached pytz-2017.3-py2.py3-none-any.whl
Requirement already satisfied: setuptools in e:\1py_div\build_env\lib\site-packages
Collecting six>=1.5 (from python-dateutil)
Using cached six-1.11.0-py2.py3-none-any.whl
Installing collected packages: six, python-dateutil, pytz
Successfully installed python-dateutil-2.6.1 pytz-2017.3 six-1.11.0
(build_env) E:\1py_div\build_env
λ pip install pandas
Collecting pandas
Downloading pandas-0.21.1-cp36-cp36m-win32.whl (8.2MB)
100% |████████████████████████████████| 8.2MB 158kB/s
Requirement already satisfied: numpy>=1.9.0 in e:\1py_div\build_env\lib\site-packages (from pandas)
Requirement already satisfied: pytz>=2011k in e:\1py_div\build_env\lib\site-packages (from pandas)
Requirement already satisfied: python-dateutil>=2 in e:\1py_div\build_env\lib\site-packages (from pandas)
Requirement already satisfied: six>=1.5 in e:\1py_div\build_env\lib\site-packages (from python-dateutil>=2->pandas)
Installing collected packages: pandas
Successfully installed pandas-0.21.1
(build_env) E:\1py_div\build_env
λ pip install pypiwin32
Collecting pypiwin32
Using cached pypiwin32-220-cp36-none-win32.whl
Installing collected packages: pypiwin32
Successfully installed pypiwin32-220
I place my
work_data.py
(that use pandas) in environment to make sure that all import work.
I build with:
(build_env) E:\1py_div\build_env
λ pyinstaller -F work_data.py
There is a problem:
Error:
No module named 'pandas._libs.tslibs.timedeltas'
Open spec(auto generated every time run pyinstaller) file and add:
hiddenimports=['pandas._libs.tslibs.timedeltas'],
Now run spec file:
(build_env) E:\1py_div\build_env
λ pyinstaller --clean work_data.spec
Finish i have one
work_data.exe
that run pandas and size is
23.4MB
.