@@ -521,6 +521,7 @@ def jedi_script(self, position=None, use_document_path=False):
521
521
extra_paths = []
522
522
environment_path = None
523
523
env_vars = None
524
+ prioritize = False
524
525
525
526
if self ._config :
526
527
jedi_settings = self ._config .plugin_settings (
@@ -537,19 +538,21 @@ def jedi_script(self, position=None, use_document_path=False):
537
538
538
539
extra_paths = jedi_settings .get ("extra_paths" ) or []
539
540
env_vars = jedi_settings .get ("env_vars" )
541
+ prioritize = jedi_settings .get ("prioritize" )
540
542
541
- # Drop PYTHONPATH from env_vars before creating the environment because that makes
542
- # Jedi throw an error .
543
+ # Drop PYTHONPATH from env_vars before creating the environment to
544
+ # ensure that Jedi can startup properly without module name collision .
543
545
if env_vars is None :
544
546
env_vars = os .environ .copy ()
545
547
env_vars .pop ("PYTHONPATH" , None )
546
548
547
- environment = (
548
- self .get_enviroment (environment_path , env_vars = env_vars )
549
- if environment_path
550
- else None
551
- )
552
- sys_path = self .sys_path (environment_path , env_vars = env_vars ) + extra_paths
549
+ environment = self .get_enviroment (environment_path , env_vars = env_vars )
550
+
551
+ sys_path = list (self ._extra_sys_path ) + environment .get_sys_path ()
552
+ if prioritize :
553
+ sys_path += extra_paths + sys_path
554
+ else :
555
+ sys_path += sys_path + extra_paths
553
556
project_path = self ._workspace .root_path
554
557
555
558
# Extend sys_path with document's path if requested
@@ -559,7 +562,7 @@ def jedi_script(self, position=None, use_document_path=False):
559
562
kwargs = {
560
563
"code" : self .source ,
561
564
"path" : self .path ,
562
- "environment" : environment ,
565
+ "environment" : environment if environment_path else None ,
563
566
"project" : jedi .Project (path = project_path , sys_path = sys_path ),
564
567
}
565
568
@@ -585,8 +588,8 @@ def get_enviroment(self, environment_path=None, env_vars=None):
585
588
return environment
586
589
587
590
def sys_path (self , environment_path = None , env_vars = None ):
591
+ # TODO: when safe to break API, remove this method.
588
592
# Copy our extra sys path
589
- # TODO: when safe to break API, use env_vars explicitly to pass to create_environment
590
593
path = list (self ._extra_sys_path )
591
594
environment = self .get_enviroment (
592
595
environment_path = environment_path , env_vars = env_vars
0 commit comments