Check package requirements before importing them
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import argparse
|
if __name__ == '__main__':
|
||||||
import copy
|
from source.meta.check_requirements import check_requirements
|
||||||
|
check_requirements(console=True)
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import RaceRandom as random
|
import RaceRandom as random
|
||||||
import textwrap
|
|
||||||
import shlex
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from source.classes.BabelFish import BabelFish
|
from source.classes.BabelFish import BabelFish
|
||||||
|
|||||||
4
Gui.py
4
Gui.py
@@ -1,3 +1,7 @@
|
|||||||
|
if __name__ == '__main__':
|
||||||
|
from source.meta.check_requirements import check_requirements
|
||||||
|
check_requirements()
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|||||||
41
source/meta/check_requirements.py
Normal file
41
source/meta/check_requirements.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import importlib.util
|
||||||
|
import webbrowser
|
||||||
|
from tkinter import Tk, Label, Button, Frame
|
||||||
|
|
||||||
|
|
||||||
|
def check_requirements(console=False):
|
||||||
|
check_packages = {'aenum': 'aenum',
|
||||||
|
'fast-enum': 'fast_enum',
|
||||||
|
'python-bps-continued': 'bps',
|
||||||
|
'colorama': 'colorama',
|
||||||
|
'aioconsole' : 'aioconsole',
|
||||||
|
'websockets' : 'websockets',
|
||||||
|
'pyyaml': 'yaml'}
|
||||||
|
missing = []
|
||||||
|
for package, import_name in check_packages.items():
|
||||||
|
spec = importlib.util.find_spec(import_name)
|
||||||
|
if spec is None:
|
||||||
|
missing.append(package)
|
||||||
|
if len(missing) > 0:
|
||||||
|
packages = ','.join(missing)
|
||||||
|
if console:
|
||||||
|
import logging
|
||||||
|
logger = logging.getLogger('')
|
||||||
|
logger.error('You need to install the following python packages:')
|
||||||
|
logger.error(f'{packages}')
|
||||||
|
logger.error('See the step about "Installing Platform-specific dependencies":')
|
||||||
|
logger.error('https://github.com/aerinon/ALttPDoorRandomizer/blob/DoorDev/docs/BUILDING.md')
|
||||||
|
else:
|
||||||
|
master = Tk()
|
||||||
|
master.title('Error')
|
||||||
|
frame = Frame(master)
|
||||||
|
frame.pack(expand=True, padx =50, pady=50)
|
||||||
|
Label(frame, text='You need to install the following python packages:').pack()
|
||||||
|
Label(frame, text=f'{packages}').pack()
|
||||||
|
Label(frame, text='See the step about "Installing Platform-specific dependencies":').pack()
|
||||||
|
url = 'https://github.com/aerinon/ALttPDoorRandomizer/blob/DoorDev/docs/BUILDING.md'
|
||||||
|
link = Label(frame, fg='blue', cursor='hand2', text=url)
|
||||||
|
link.pack()
|
||||||
|
link.bind('<Button-1>', lambda e: webbrowser.open_new_tab(url))
|
||||||
|
Button(master, text='Ok', command=master.destroy).pack()
|
||||||
|
master.mainloop()
|
||||||
Reference in New Issue
Block a user