@@ -521,6 +521,7 @@ def jedi_script(self, position=None, use_document_path=False):
521521 extra_paths = []
522522 environment_path = None
523523 env_vars = None
524+ prioritize = False
524525
525526 if self ._config :
526527 jedi_settings = self ._config .plugin_settings (
@@ -537,19 +538,21 @@ def jedi_script(self, position=None, use_document_path=False):
537538
538539 extra_paths = jedi_settings .get ("extra_paths" ) or []
539540 env_vars = jedi_settings .get ("env_vars" )
541+ prioritize = jedi_settings .get ("prioritize" )
540542
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 .
543545 if env_vars is None :
544546 env_vars = os .environ .copy ()
545547 env_vars .pop ("PYTHONPATH" , None )
546548
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
553556 project_path = self ._workspace .root_path
554557
555558 # Extend sys_path with document's path if requested
@@ -559,7 +562,7 @@ def jedi_script(self, position=None, use_document_path=False):
559562 kwargs = {
560563 "code" : self .source ,
561564 "path" : self .path ,
562- "environment" : environment ,
565+ "environment" : environment if environment_path else None ,
563566 "project" : jedi .Project (path = project_path , sys_path = sys_path ),
564567 }
565568
@@ -585,8 +588,8 @@ def get_enviroment(self, environment_path=None, env_vars=None):
585588 return environment
586589
587590 def sys_path (self , environment_path = None , env_vars = None ):
591+ # TODO: when safe to break API, remove this method.
588592 # Copy our extra sys path
589- # TODO: when safe to break API, use env_vars explicitly to pass to create_environment
590593 path = list (self ._extra_sys_path )
591594 environment = self .get_enviroment (
592595 environment_path = environment_path , env_vars = env_vars
0 commit comments