@@ -507,6 +507,7 @@ def jedi_script(self, position=None, use_document_path=False):
507
507
extra_paths = []
508
508
environment_path = None
509
509
env_vars = None
510
+ prioritize = False
510
511
511
512
if self ._config :
512
513
jedi_settings = self ._config .plugin_settings (
@@ -523,19 +524,21 @@ def jedi_script(self, position=None, use_document_path=False):
523
524
524
525
extra_paths = jedi_settings .get ("extra_paths" ) or []
525
526
env_vars = jedi_settings .get ("env_vars" )
527
+ prioritize = jedi_settings .get ("prioritize" )
526
528
527
- # Drop PYTHONPATH from env_vars before creating the environment because that makes
528
- # Jedi throw an error .
529
+ # Drop PYTHONPATH from env_vars before creating the environment to
530
+ # ensure that Jedi can startup properly without module name collision .
529
531
if env_vars is None :
530
532
env_vars = os .environ .copy ()
531
533
env_vars .pop ("PYTHONPATH" , None )
532
534
533
- environment = (
534
- self .get_enviroment (environment_path , env_vars = env_vars )
535
- if environment_path
536
- else None
537
- )
538
- sys_path = self .sys_path (environment_path , env_vars = env_vars ) + extra_paths
535
+ environment = self .get_enviroment (environment_path , env_vars = env_vars )
536
+
537
+ sys_path = list (self ._extra_sys_path ) + environment .get_sys_path ()
538
+ if prioritize :
539
+ sys_path += extra_paths + sys_path
540
+ else :
541
+ sys_path += sys_path + extra_paths
539
542
project_path = self ._workspace .root_path
540
543
541
544
# Extend sys_path with document's path if requested
@@ -545,7 +548,7 @@ def jedi_script(self, position=None, use_document_path=False):
545
548
kwargs = {
546
549
"code" : self .source ,
547
550
"path" : self .path ,
548
- "environment" : environment ,
551
+ "environment" : environment if environment_path else None ,
549
552
"project" : jedi .Project (path = project_path , sys_path = sys_path ),
550
553
}
551
554
@@ -571,8 +574,8 @@ def get_enviroment(self, environment_path=None, env_vars=None):
571
574
return environment
572
575
573
576
def sys_path (self , environment_path = None , env_vars = None ):
577
+ # TODO: when safe to break API, remove this method.
574
578
# Copy our extra sys path
575
- # TODO: when safe to break API, use env_vars explicitly to pass to create_environment
576
579
path = list (self ._extra_sys_path )
577
580
environment = self .get_enviroment (
578
581
environment_path = environment_path , env_vars = env_vars
0 commit comments