import bpy from subprocess import run from . import file_ops import numpy # get python's binary path (literally my saviour) py_bin = bpy.app.binary_path_python pip_install = [py_bin, "-B", "-m", "pip", "install", "--trusted-host", "pypi.python.org", "--trusted-host", "files.pythonhosted.org", "--trusted-host", "pypi.org", "-U", "--force-reinstall", "--only-binary", ":all:"] upd_mods = ["pip", "wheel", "setuptools"] new_mods = ["lxml"] try: import pip import lxml except: # hecking install pip (ensurepip) + required modules run([py_bin, "-B", "-m", "ensurepip"]) # update basic modules then download new modules # before that, rename the numpy folder to be able to update numpy run(pip_install + upd_mods) run(pip_install + new_mods) print("First exit!") bpy.ops.wm.quit_blender() exit(0) # print module's versions installed print("pip %s is installed!" % (pip.__version__)) print("lxml %s is installed!" % (lxml.__version__)) # for those who have installed blenxy before, update numpy # hacky way to do it but it is the only way that works if (numpy.__version__ != "1.18.5"): file_ops.rm_folder(numpy.__path__[0]) # remove the installation folder run(pip_install + ["numpy==1.18.5"]) # install the newer version print("numpy %s is installed!" % (numpy.__version__))