52
52
"lxml" : "lxml" ,
53
53
"networkx" : "networkx" , # optional for blender
54
54
"trimesh" : "trimesh" , # optional for blender
55
+ "PIL" : "Pillow" # optional for blender
55
56
}
56
57
57
58
extra_requirements = {
58
59
"pybullet" : "pybullet" , # optional for blender
59
60
"open3d" : "open3d" , # optional for blender
60
- "python-fcl" : "python-fcl" , # optional for blender,
61
- "PIL" : "Pillow" # optional for blender,
61
+ "python-fcl" : "python-fcl" , # optional for blender
62
62
}
63
63
64
64
@@ -80,7 +80,7 @@ def install_requirement(package_name, upgrade_pip=False, lib=None, ensure_pip=Tr
80
80
subprocess .check_call ([sys .executable , "-m" , "pip" , "install" , "--upgrade" , f"--target={ str (lib )} " , package_name ])
81
81
82
82
83
- def check_requirements (optional = False , extra = False , force = False , upgrade_pip = False , lib = None ):
83
+ def check_requirements (optional = False , extra = False , force = False , upgrade_pip = False , lib = None , install = True ):
84
84
import importlib
85
85
print ("Checking requirements:" )
86
86
# Ensure pip is installed
@@ -99,11 +99,17 @@ def check_requirements(optional=False, extra=False, force=False, upgrade_pip=Fal
99
99
try :
100
100
try :
101
101
if importlib .util .find_spec (import_name ) is None :
102
- install_requirement (req_name , upgrade_pip = False , lib = lib , ensure_pip = False )
102
+ if install :
103
+ install_requirement (req_name , upgrade_pip = False , lib = lib , ensure_pip = False )
104
+ else :
105
+ raise ImportError ("Uninstalled requirement:" + req_name )
103
106
except AttributeError : # when using importlib before v3.4
104
107
loader = importlib .find_loader (import_name )
105
108
if not issubclass (type (loader ), importlib .machinery .SourceFileLoader ):
106
- install_requirement (req_name , upgrade_pip = False , lib = lib , ensure_pip = False )
109
+ if install :
110
+ install_requirement (req_name , upgrade_pip = False , lib = lib , ensure_pip = False )
111
+ else :
112
+ raise ImportError ("Uninstalled requirement:" + req_name )
107
113
except subprocess .CalledProcessError as e :
108
114
if import_name in list (optional_requirements .keys ()) + list (extra_requirements .keys ()):
109
115
print (f"Couldn't install optional requirement { import_name } ({ req_name } )" )
@@ -226,9 +232,10 @@ def version(package_name):
226
232
from . import utils
227
233
from . import ci
228
234
from . import scripts
235
+ check_requirements (optional = True , upgrade_pip = False , extra = False , install = False )
229
236
except ImportError as e :
230
237
# this is the first installation in blender so we check the requirements
231
- check_requirements (optional = True , upgrade_pip = True , extra = False )
238
+ check_requirements (optional = True , upgrade_pip = True , extra = False , install = True )
232
239
message = "All Phobos requirements have been installed.\n Please restart Blender to activate the Phobos add-on!"
233
240
234
241
def draw (self , context ):
0 commit comments