Задать вопрос
Vapaamies
@Vapaamies
Психанул и снес свои ответы не отмечающим решения…

Каков должен быть sys.path у чистого Python 3.1x под Windows?

Что выводит у вас эта команда, запущенная из-под только что скачанного и распакованного из zip-архива Python 3.1x под Windows 10 или 11?
python -c "import sys; print(sys.path)"

Запускаю Python 3.12.6 под Windows 7 при помощи VxKex, получаю:
Could not find platform independent libraries <prefix>
Python path configuration:
  PYTHONHOME = (not set)
  PYTHONPATH = (not set)
  program name = 'C:\Tools\Python-3.12.6\python.exe'
  isolated = 0
  environment = 1
  user site = 1
  safe_path = 0
  import site = 1
  is in build tree = 0
  stdlib dir = '\\?\C:\Tools\Python-3.12.6'
  sys._base_executable = 'C:\\Tools\\Python-3.12.6\\python.exe'
  sys.base_prefix = 'C:\\Tools\\Python-3.12.6'
  sys.base_exec_prefix = 'C:\\Tools\\Python-3.12.6'
  sys.platlibdir = 'DLLs'
  sys.executable = 'C:\\Tools\\Python-3.12.6\\python.exe'
  sys.prefix = 'C:\\Tools\\Python-3.12.6'
  sys.exec_prefix = 'C:\\Tools\\Python-3.12.6'
  sys.path = [
    '\\\\?\\C:\\Tools\\Python-3.12.6\\python312',
    '\\\\?\\C:\\Tools\\Python-3.12.6',
    '\\\\?\\C:\\Tools\\Python-3.12.6',
    'C:\\Tools\\Python-3.12.6',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00002c6c (most recent call first):
  <no Python frame>

Вижу, что файл со стандартной библиотекой python312.zip в списке sys.path почему-то идет без расширения, создаю жесткую ссылку на него с именем python312. Теперь команда срабатывает:
['', '\\\\?\\C:\\Tools\\Python-3.12.6\\python312', '\\\\?\\C:\\Tools\\Python-3.12.6', 'C:\\Tools\\Python-3.12.6', 'C:\\Tools\\Python-3.12.6\\Lib\\site-packages']

Но zip-файл библиотеки по-прежнему без расширения, а еще в списке нету подкаталога Lib.

Хочется понять, это баг в VxKex, или же с самим Python что-то не так: что-то поменялось, и теперь без бубна он не заводится? В настоящей Windows 10 как?

Для сравнения, вот что выводит Python 3.8.10, штатно работающий под Windows 7:
['', 'C:\\Tools\\Python\\python38.zip', 'C:\\Tools\\Python\\DLLs', 'C:\\Tools\\Python\\lib', 'C:\\Tools\\Python', 'C:\\Tools\\Python\\lib\\site-packages']

Переменные PYTHONHOME и PYTHONPATH не установлены: суть именно в том, что всё работает и так — сразу после распаковки из архива.

Пожалуйста, не надо советовать мне перейти на Windows 10
По использованию VxKex должно быть понятно, что я остаюсь на 7-ке по идейным соображениям. Если баг в VxKex — надо сообщить разработчику, чтобы исправил. На будущее. Пока мне вполне хватает Python 3.8 и других «устаревших» программ, работающих под Windows 7 без патчей API.

Удивляет, что после создания жесткой ссылки новый Python начинает нормально работать: я без проблем поставил кучу пакетов с pip, потом гонял его на реальной задаче.
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
[
  '', 
  'D:\\Python312\\python312.zip', 
  'D:\\Python312\\DLLs', 
  'D:\\Python312\\Lib', 
  'D:\\Python312', 
  'D:\\Python312\\Lib\\site-packages', 
  'D:\\Python312\\Lib\\site-packages\\win32', 
  'D:\\Python312\\Lib\\site-packages\\win32\\lib', 
  'D:\\Python312\\Lib\\site-packages\\Pythonwin'
]
Ответ написан
Комментировать
Vapaamies
@Vapaamies Автор вопроса
Психанул и снес свои ответы не отмечающим решения…
Скопировав Python 3.12 из предложенной в комменте сборки для Windows 7, забыл выключить VxKex и получил ту же ошибку! То есть баг в VxKex подтвержден. Но сам он оказался не нужен, раз есть рабочие неофициальные сборки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@eminsk
программирую на python
В Windows 7 ты не как не запустишь python 3.12 и не выше 3.8
Windows 8.x тут версии python 3.9-3.11 но не как python 3.12
Windows XP тут версии python 3.x-3.4 и выше нельзя

Реализация на windows 7 в твоем случае

Python 3.8.19 (default, Mar 20 2024, 11:17:09) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\n'.join(__import__('sys').path))

D:\Python38\python38.zip
D:\Python38\DLLs
D:\Python38\lib
D:\Python38
D:\Python38\lib\site-packages
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы