将 .ipynb 打包为可执行文件的正确方法
Correct way to package a .ipynb as an executable file
背景 - 我创建了一个 Python 脚本,它有很多依赖项;该脚本将 API、returns 一些数据调用为 JSON,然后将其保存在 pandas df
中,然后使用 xlsxwriter
.
问题 - 该脚本是在 Jupyter Lab 中编写的,因此目前是一个 .ipynb
文件。我正在尝试将此脚本变成最有效的执行脚本,我可以每天 运行(使用 Windows Scheduler
)。在 JupyterLab 中,我尝试过文件 --> 将笔记本保存并导出为...'。如果脚本很简单,比如 input("Type something")
.
然而,如果我尝试以相同的方式保存一个更复杂的脚本,其中包含许多依赖项,'executable file' 将打开然后快速关闭,而我没有机会查看哪里出了问题(脚本 运行 在 JupyterLab 中以 .ipbny
格式很好)我应该说 'complex script' 有一个进度条和其他元素,应该在较长时间内打印到控制台。
帮助 - 让更大的 python 脚本(具有很多依赖项)可执行的正确方法是什么?在处理大型脚本时是否采取了额外的步骤?下面是我的代码回复的依赖 -
# Importing depedencies
from configparser import ConfigParser
import datetime as date
import datetime as dt
import datetime
from datetime import timedelta
from datetime import date
import itertools
import pandas as pd
from pandas import json_normalize
import requests as requests
from requests.auth import HTTPBasicAuth
import time
import json
import jsonpath_ng as jp
import xlsxwriter
import enlighten
我能想到的最简单的方法是使用 pyinstaller 将其转换为 .py。这是传统的做法。
pyinstaller --onefile main.py
复制所有其他 files/dependencies 所在的 .exe。
并添加:
if getattr(sys, 'frozen', False):
application_path = os.path.dirname(sys.executable)
elif __file__:
application_path = os.path.dirname(__file__)
将 application_path 添加到您的所有路径
背景 - 我创建了一个 Python 脚本,它有很多依赖项;该脚本将 API、returns 一些数据调用为 JSON,然后将其保存在 pandas df
中,然后使用 xlsxwriter
.
问题 - 该脚本是在 Jupyter Lab 中编写的,因此目前是一个 .ipynb
文件。我正在尝试将此脚本变成最有效的执行脚本,我可以每天 运行(使用 Windows Scheduler
)。在 JupyterLab 中,我尝试过文件 --> 将笔记本保存并导出为...'。如果脚本很简单,比如 input("Type something")
.
然而,如果我尝试以相同的方式保存一个更复杂的脚本,其中包含许多依赖项,'executable file' 将打开然后快速关闭,而我没有机会查看哪里出了问题(脚本 运行 在 JupyterLab 中以 .ipbny
格式很好)我应该说 'complex script' 有一个进度条和其他元素,应该在较长时间内打印到控制台。
帮助 - 让更大的 python 脚本(具有很多依赖项)可执行的正确方法是什么?在处理大型脚本时是否采取了额外的步骤?下面是我的代码回复的依赖 -
# Importing depedencies
from configparser import ConfigParser
import datetime as date
import datetime as dt
import datetime
from datetime import timedelta
from datetime import date
import itertools
import pandas as pd
from pandas import json_normalize
import requests as requests
from requests.auth import HTTPBasicAuth
import time
import json
import jsonpath_ng as jp
import xlsxwriter
import enlighten
我能想到的最简单的方法是使用 pyinstaller 将其转换为 .py。这是传统的做法。
pyinstaller --onefile main.py
复制所有其他 files/dependencies 所在的 .exe。
并添加:
if getattr(sys, 'frozen', False):
application_path = os.path.dirname(sys.executable)
elif __file__:
application_path = os.path.dirname(__file__)
将 application_path 添加到您的所有路径