Python 3.7 препятствует использованию других версий Python в виртуальной среде - PullRequest
0 голосов
/ 24 ноября 2018

У меня установлены Python 3.6.3 и Python 3.7, и когда я пытаюсь настроить виртуальную среду с 3.6.3, выдает ошибку, и кажется, что вместо этого вызывается Python 3.7, несмотря на попытки следовать рекомендациям SOссылки, указанные ниже.Windows 10 и первая проверка, где находится исполняемый файл Python 3.6.3:

C:\>py -3.6
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
import sys
print(sys.executable) #C:\Python\python.exe

Теперь, следуя принятому ответу от здесь :

C:\>mkdir pyvirtenv && cd pyvirtenv
C:\pyvirtenv>py -3.6 -m venv pyvirtenv

, я получаю следующееошибка:

File "C:\Python37\lib\runpy.py", line 183, in _run_module_as_main
    mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
  File "C:\Python37\lib\runpy.py", line 142, in _get_module_details
    return _get_module_details(pkg_main_name, error)
  File "C:\Python37\lib\runpy.py", line 109, in _get_module_details
    __import__(pkg_name)
  File "C:\Python37\lib\venv\__init__.py", line 7, in <module>
    import logging
  File "C:\Python37\lib\logging\__init__.py", line 26, in <module>
    import sys, os, time, io, traceback, warnings, weakref, collections.abc
  File "C:\Python37\lib\traceback.py", line 5, in <module>
    import linecache
  File "C:\Python37\lib\linecache.py", line 11, in <module>
    import tokenize
  File "C:\Python37\lib\tokenize.py", line 33, in <module>
    import re
  File "C:\Python37\lib\re.py", line 123, in <module>
    import sre_compile
  File "C:\Python37\lib\sre_compile.py", line 17, in <module>
    assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch

Кажется, что Python 3.7 вызывается даже с помощью команды 3.6. Затем я попробовал еще одну альтернативу, предложенную в ответе, принятом в предыдущем посте, а именно: замена py -3.6 на путь к исполняемому файлуно та же ошибка сохраняется

Также пытался использовать virutalenv вместо venv, как указано в конкретных решениях Windows здесь , но окончательная ошибка остается неизменной:

C:\pyvirtenv>virtualenv -p C:\Python\python.exe pyvirtenv
Traceback (most recent call last):
  File "C:\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python\Scripts\virtualenv.exe\__main__.py", line 2, in <module>
  File "C:\Python37\lib\re.py", line 123, in <module>
    import sre_compile
  File "C:\Python37\lib\sre_compile.py", line 17, in <module>
    assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch

НастройкаВиртуальная среда с Python 3.7 работает нормально, и вышеупомянутые проблемы остаются даже после того, как я полностью удалил Python 3.7 из PATH и перезагрузил.

Спасибо

edit

добавление вывода py -3.6 -m site в соответствии с запросом в комментарии:

sys.path = [
    'C:\\pyvirtenv',
    'C:\\Python\\python36.zip',
    'C:\\Python37\\DLLs',
    'C:\\Python37\\lib',
    'C:\\Python37',
    'C:\\',
]
USER_BASE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python\\Python36\\site-packages' (doesn't exist)
ENABLE_USER_SITE: False

edit2

дальнейшее обновление на основе второго раунда комментариев ниже:

c: \> py -3.6 -c "import site; print(site.__file__)" #C:\Python37\lib\site.py
c:\>python37\lib\site.py
sys.path = [
    'C:\\python37\\lib',
    'C:\\Python37\\python37.zip',
    'C:\\Python37\\DLLs',
    'C:\\Python37',
    'C:\\',
]
USER_BASE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\shanlodh\\AppData\\Roaming\\Python\\Python37\\site-packages' (doesn't exist)
ENABLE_USER_SITE: False

1 Ответ

0 голосов
/ 24 ноября 2018

Технически это не ответ на ваш вопрос, но, безусловно, это вариант, если вы продолжаете сталкиваться с теми же проблемами.В любом случае, я предлагаю вам попробовать и использовать Conda менеджер виртуальной среды.Кажется, он работает очень хорошо как для Windows, так и для Unix-систем.

Вы также можете прочитать этот вопрос , чтобы начать настройку среды предыдущих версий Python.

Надеюсь, что это такпомогает.

...