如何让virtualenv看到Ubuntu上默认的python版本

问题描述 投票:0回答:2

我在Ubuntu-16.04上创建虚拟环境时遇到错误。 特别是,

virtualenv -p python myenv
返回

Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 7, in <module>
    from virtualenv.__main__ import run_with_catch
  File "/usr/local/lib/python3.5/dist-packages/virtualenv/__init__.py", line 3, in <module>
    from .run import cli_run, session_via_cli
  File "/usr/local/lib/python3.5/dist-packages/virtualenv/run/__init__.py", line 7, in <module>
    from ..app_data import make_app_data
  File "/usr/local/lib/python3.5/dist-packages/virtualenv/app_data/__init__.py", line 9, in <module>
    from platformdirs import user_data_dir
  File "/usr/local/lib/python3.5/dist-packages/platformdirs/__init__.py", line 29
    result: type[PlatformDirsABC] = getattr(importlib.import_module(module), name)
          ^
SyntaxError: invalid syntax

表示 Python 3.5 中的语法不正确。但是,我已将 Ubuntu 上的默认 python 版本设置为 Python 3.8.9,即

python -V
返回
Python 3.8.9
。 那么为什么
virtualenv
指的是 Python 3.5,尽管 Python 3.8.9 是默认值?

附加信息:
我的

virtualenv
版本是15.0.1
回溯中的第一行指的是
/usr/local/bin/virtualenv
,看起来像这样

#!/usr/bin/python3

# -*- coding: utf-8 -*-
import re
import sys

from virtualenv.__main__ import run_with_catch

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(run_with_catch())

更新:
跑步

python3 -m pip install virtualenv
回报

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 185, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "/usr/lib/python3.8/runpy.py", line 144, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "/usr/lib/python3.8/runpy.py", line 111, in _get_module_details
    __import__(pkg_name)
  File "/usr/lib/python3/dist-packages/pip/__init__.py", line 14, in <module>
    from pip.utils import get_installed_distributions, get_prog
  File "/usr/lib/python3/dist-packages/pip/utils/__init__.py", line 23, in <module>
    from pip.locations import (
  File "/usr/lib/python3/dist-packages/pip/locations.py", line 9, in <module>
    from distutils import sysconfig
ImportError: cannot import name 'sysconfig' from 'distutils' (/usr/lib/python3.8/distutils/__init__.py)
python python-3.x ubuntu virtualenv ubuntu-16.04
2个回答
3
投票

您可以使用以下命令来确保 virtualenv 默认引用 python3.8

python3.8 -m virtualenv myenv

0
投票

当我在 ubuntu 16.04 上遇到同样的错误时,首先,我升级了我的 python 包,尽管当我使用

command

python --version

它显示版本 3.8,我继续使用下面的代码升级并重新安装我的 Python 包版本 3.8

sudo apt-get update
sudo apt install python3.8

然后我继续使用

创建一个新的虚拟环境
python3.8 -m venv -m venv name_of_the_project_env   

然后我用

激活了环境
source name_of_the_project_env/bin/activate

希望它对有同样问题的人有用

© www.soinside.com 2019 - 2024. All rights reserved.