示例#1
0
def get_environment(use_cache=True):
    global current_environment

    vim_force_python_version = vim_eval("g:jedi#force_py_version")
    if use_cache and vim_force_python_version == current_environment[0]:
        return current_environment[1]

    environment = None
    if vim_force_python_version == "auto":
        environment = jedi.api.environment.get_cached_default_environment()
    else:
        force_python_version = vim_force_python_version
        if '0000' in force_python_version or '9999' in force_python_version:
            # It's probably a float that wasn't shortened.
            try:
                force_python_version = "{:.1f}".format(float(force_python_version))
            except ValueError:
                pass
        elif isinstance(force_python_version, float):
            force_python_version = "{:.1f}".format(force_python_version)

        try:
            environment = jedi.get_system_environment(force_python_version)
        except jedi.InvalidPythonEnvironment as exc:
            environment = jedi.api.environment.get_cached_default_environment()
            echo_highlight(
                "force_python_version=%s is not supported: %s - using %s." % (
                    vim_force_python_version, str(exc), str(environment)))

    current_environment = (vim_force_python_version, environment)
    return environment
示例#2
0
文件: conftest.py 项目: yangle/jedi
def venv_path(tmpdir_factory, environment):
    if environment.version_info.major < 3:
        pytest.skip("python -m venv does not exist in Python 2")
    elif isinstance(environment, InterpreterEnvironment):
        # The environment can be a tox virtualenv environment which we don't
        # want, so use the system environment.
        environment = get_system_environment('.'.join(
            str(x) for x in environment.version_info[:2]))

    tmpdir = tmpdir_factory.mktemp('venv_path')
    dirname = os.path.join(tmpdir.strpath, 'venv')

    # We cannot use the Python from tox because tox creates virtualenvs and
    # they have different site.py files that work differently than the default
    # ones. Instead, we find the real Python executable by printing the value
    # of sys.base_prefix or sys.real_prefix if we are in a virtualenv.
    output = subprocess.check_output([
        environment.executable, "-c", "import sys; "
        "print(sys.real_prefix if hasattr(sys, 'real_prefix') else sys.base_prefix)"
    ])
    prefix = output.rstrip().decode('utf8')
    if os.name == 'nt':
        executable_path = os.path.join(prefix, 'python')
    else:
        executable_name = os.path.basename(environment.executable)
        executable_path = os.path.join(prefix, 'bin', executable_name)

    return_code = subprocess.call([executable_path, '-m', 'venv', dirname])
    assert return_code == 0, return_code
    return dirname
示例#3
0
def get_environment(use_cache=True):
    global current_environment

    vim_force_python_version = vim_eval("g:jedi#force_py_version")
    if use_cache and vim_force_python_version == current_environment[0]:
        return current_environment[1]

    environment = None
    if vim_force_python_version == "auto":
        environment = jedi.api.environment.get_cached_default_environment()
    else:
        force_python_version = vim_force_python_version
        if '0000' in force_python_version or '9999' in force_python_version:
            # It's probably a float that wasn't shortened.
            try:
                force_python_version = "{:.1f}".format(float(force_python_version))
            except ValueError:
                pass
        elif isinstance(force_python_version, float):
            force_python_version = "{:.1f}".format(force_python_version)

        try:
            environment = jedi.get_system_environment(force_python_version)
        except jedi.InvalidPythonEnvironment as exc:
            environment = jedi.api.environment.get_cached_default_environment()
            echo_highlight(
                "force_python_version=%s is not supported: %s - using %s." % (
                    vim_force_python_version, str(exc), str(environment)))

    current_environment = (vim_force_python_version, environment)
    return environment
示例#4
0
    def _get_environment(self, force_to_use):
        if force_to_use == 'auto':
            return self._get_auto_env()

        force_python_version = force_to_use
        if self._using_jedi_env['force_version'] is not None \
                and self._using_jedi_env['force'] == force_to_use:
            # cached
            return self._using_jedi_env['force_version']

        # reflesh
        self._using_jedi_env['force'] = force_to_use
        if '0000' in force_python_version or '9999' in force_python_version:
            # It's probably a float that wasn't shortened.
            try:
                force_python_version = "{:.1f}".format(
                    float(force_python_version))
            except ValueError:
                pass
        elif isinstance(force_python_version, float):
            force_python_version = "{:.1f}".format(force_python_version)

        try:
            environment = jedi.get_system_environment(force_python_version)
            self._using_jedi_env['force_version'] = environment
        except jedi.InvalidPythonEnvironment:
            self._using_jedi_env['force_version'] = None
            return self._get_auto_env()
示例#5
0
def get_environment(use_cache=True):
    if use_cache:
        return jedi.api.environment.get_cached_default_environment()
    else:
        try:
            return jedi.get_system_environment()
        except jedi.InvalidPythonEnvironment as exc:
            traceback.format_exc(exc)
            raise