You can use py2exe to pack your python script as a standalone executable.
By default py2exe packs all imported packages. If you want to pack browser also, you might have to use portable browser.
You can add portable browser as data to your py2exe package and specify the realative path while initializing webdriver.
You can specify firefox binary executable using executable_path argument in below class.
webdriver.Firefox(self, firefox_profile=None,firefox_binary=None, timeout=30, capabilities=None, proxy=None, executable_path=geckodriver, firefox_options=None, log_path=geckodriver.log)
** I dont have option to add comment , so writing as answer.