How to deploy python script?
For the sake of completeness, dh-virtualenv by Spotify should be mentioned which enables packaging python code as a debian-package.
As a starting point, one could use this Blogpost: How We Deploy Python Code
Assuming you have no GUI, I would use a batch (.bat) file to call the script with the provided inputs.
your_script.bat:
set VAR_1=this
set VAR_2=that
python your_script.py %VAR_1% %VAR_2%
Then retrieve these arguments in the python script via
sys.argv[1] sys.argv[2]
For final users it's just a double click!
I hope you got the idea
[EDIT: sys.argv[0] is the name of your script]
PyInstaller is a powerful opensource tool for cross-platform deployment/distribution of python project.
*Note: Although I have no experience on distributing Jupyter Notebook with PyInstaller, but it seems to be plausible with this guide.
Install through pypi:
pip install pyinstaller
Distribution of code without console can be as simple as:
pyinstaller --noconsole script.py
Then you can find your .exe(Window) under dist folder of your working directory.
I want to round up this question by suggesting a couple of ways to deploy Python Script or Models:
- Docker: This is one of the most popular ways of hosting scripts and deploying Machine Learning Models online. You can use Docker to containerize the code and host it as a microservice using different apps.
- PEX: PEX is a clever tool being developed at Twitter that allows Python code to be shipped as executable zip files.
- AWS: Using AWS, you can create a free account and get started with hosting/deployment. A lot of resources are available online.
- PYSimple, Pyinstaller, and Sparrow: As mentioned in the answers above, we can use these packages also to do the task. Please read above.
- Flask App: If you don't want to use Docker, using a simple flask app, you will be able to host your script online. But there will be a lot of issues as it is not containerized. Best to use Docker.
- py2exe: If you are looking to convert the Python file into windows executable, Click here
- cx_Freeze: Similar to the py2exe, you can use this also
I will keep adding more content as I find them, but I think the best way to do it using Docker. Hope this helps.