@@ -1198,6 +1198,8 @@ def _find_importable(self, imp_dir, name, boost, find_package=True):
1198
1198
else :
1199
1199
while main .startswith ('./' ):
1200
1200
main = main [2 :]
1201
+ main_dir = os .path .dirname (main )
1202
+ main_base = os .path .join (main_dir , os .path .basename (main ).partition ('.' )[0 ])
1201
1203
for subpath in self .subpaths :
1202
1204
_name = os .path .join (name , self .subpaths_re .sub (r'\1%s\2' % subpath , main ))
1203
1205
if os .path .exists (os .path .join (imp_dir , dirname (_name ))):
@@ -1207,6 +1209,22 @@ def _find_importable(self, imp_dir, name, boost, find_package=True):
1207
1209
module = (module [0 ], name , module [2 ])
1208
1210
return module
1209
1211
1212
+ _name = os .path .join (name , self .subpaths_re .sub (r'\1%s\2' % subpath , main_base ))
1213
+ if os .path .exists (os .path .join (imp_dir , dirname (_name ))):
1214
+ module = self ._find_importable (imp_dir , _name , boost // 2 , find_package = False )
1215
+ if module :
1216
+ # Remove subpath from module name
1217
+ module = (module [0 ], name , module [2 ])
1218
+ return module
1219
+
1220
+ _name = os .path .join (name , self .subpaths_re .sub (r'\1%s\2' % subpath , main_dir ))
1221
+ if os .path .exists (os .path .join (imp_dir , dirname (_name ))):
1222
+ module = self ._find_importable (imp_dir , _name , boost // 2 , find_package = False )
1223
+ if module :
1224
+ # Remove subpath from module name
1225
+ module = (module [0 ], name , module [2 ])
1226
+ return module
1227
+
1210
1228
if not suffix :
1211
1229
for _suffix in suffixes :
1212
1230
_name = dirname (name )
@@ -1221,7 +1239,8 @@ def _find_importable(self, imp_dir, name, boost, find_package=True):
1221
1239
return (suffixes_dict [_suffix ] + boost , name , (init , 'index' , False ))
1222
1240
1223
1241
if suffix in suffixes :
1224
- return (suffixes_dict [suffix ] + boost , mod , (name , basename (mod ), False ))
1242
+ if os .path .exists (os .path .join (imp_dir , name )):
1243
+ return (suffixes_dict [suffix ] + boost , mod , (name , basename (mod ), False ))
1225
1244
1226
1245
def find_importables_in_dir (self , imp_dir ):
1227
1246
"""See citadel.py::ImportHandler.find_importables_in_dir() for
0 commit comments