import bpy, numpy from subprocess import run from . import file_ops # 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 run(pip_install + upd_mods) run(pip_install + new_mods) # rename numpy's installation folder (cannot delete the folder in windows) file_ops.rename(numpy.__path__[0], numpy.__path__[0] + "_bad") run(pip_install + ["numpy==1.18.5"]) # install a newer version 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"): # rename numpy's installation folder (cannot delete the folder in windows) file_ops.rename(numpy.__path__[0], numpy.__path__[0] + "_bad") run(pip_install + ["numpy==1.18.5"]) # install a newer version print("Second exit!") bpy.ops.wm.quit_blender() exit(0) print("numpy %s is installed!" % (numpy.__version__))