最近几天我花了很多时间学习如何构建数据科学项目,以保持简单,可重用和pythonic.坚持我已经创建的这个指南my_project.你可以在下面看到它的结构.
??? README.md
??? data
? ??? processed <-- data files
? ??? raw
??? notebooks
| ??? notebook_1
??? setup.py
|
??? settings.py <-- settings file
??? src
??? __init__.py
?
??? data
??? get_data.py <-- script
Run Code Online (Sandbox Code Playgroud)
我定义了一个从中加载数据的函数.data/processed.我想在其他脚本中以及位于.notebooks中的jupyter笔记本中使用此函数.
def data_sample(code=None):
df = pd.read_parquet('../../data/processed/my_data')
if not code:
code = random.choice(df.code.unique())
df = df[df.code == code].sort_values('Date')
return df
Run Code Online (Sandbox Code Playgroud)
显然,除非我直接在定义它的脚本中运行它,否则此函数无法在任何地方运行.我的想法是创建settings.py我声明的地方:
from os.path import join, dirname
DATA_DIR = join(dirname(__file__), 'data', 'processed')
Run Code Online (Sandbox Code Playgroud)
所以现在我可以写:
from my_project import settings …Run Code Online (Sandbox Code Playgroud) 我尝试使用PyInstaller 3.2.1创建一个exe文件,出于测试目的,我试图为下面的代码创建一个exe:
import pandas as pd
print('hello world')
Run Code Online (Sandbox Code Playgroud)
经过相当长的时间(15分钟+)后,我完成了620文件大小的dist文件夹和构建 - 150 MB.我使用Python 3.5.2 | Anaconda自定义(64位)在Windows上工作.可能值得注意的是,在dist文件夹中,mkl文件负责将近300 MB.我使用'pyinstaller.exe foo.py'运行pyinstaller.我尝试使用--exclude-module来排除某些依赖项,但最终还是使用了大量文件.无论我使用onefile还是onedir都没有任何区别.
我知道exe必须包含一些重要文件,但是接近1 GB是否正常?如有必要,我可以提供警告日志或任何可能有助于解决问题的事情.
PS同时我的同事用相同的样本脚本创建了一个exe,结果不到100 MB,不同的是他没有使用anaconda.这可能是事吗?
任何帮助将不胜感激.