2020-01-19 20:50:04 +00:00
|
|
|
import os
|
2020-01-18 14:45:52 +00:00
|
|
|
import sys
|
|
|
|
import subprocess
|
|
|
|
import importlib
|
|
|
|
|
|
|
|
update_ran = False
|
|
|
|
|
|
|
|
def update_command():
|
|
|
|
subprocess.call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt', '--upgrade'])
|
|
|
|
|
|
|
|
def update():
|
|
|
|
global update_ran
|
|
|
|
if not update_ran:
|
|
|
|
update_ran = True
|
2020-01-19 20:50:04 +00:00
|
|
|
with open(os.path.join(os.path.dirname(__file__),'requirements.txt')) as requirementsfile:
|
2020-01-18 14:45:52 +00:00
|
|
|
for line in requirementsfile.readlines():
|
|
|
|
module, remoteversion = line.split(">=")
|
|
|
|
try:
|
|
|
|
module = importlib.import_module(module)
|
|
|
|
except:
|
|
|
|
import traceback
|
|
|
|
traceback.print_exc()
|
|
|
|
input(f'Required python module {module} not found, press enter to install it')
|
|
|
|
update_command()
|
|
|
|
else:
|
|
|
|
if hasattr(module, "__version__"):
|
|
|
|
module_version = module.__version__
|
|
|
|
module = module.__name__ #also unloads the module to make it writable
|
|
|
|
if type(module_version) == str:
|
|
|
|
module_version = tuple(int(part.strip()) for part in module_version.split("."))
|
|
|
|
remoteversion = tuple(int(part.strip()) for part in remoteversion.split("."))
|
|
|
|
if module_version < remoteversion:
|
|
|
|
input(f'Required python module {module} is outdated ({module_version}<{remoteversion}), press enter to upgrade it')
|
|
|
|
update_command()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2020-01-19 20:50:04 +00:00
|
|
|
update()
|