Pyenv — переключение между версиями Python и PySpark без жесткого кодирования путей к переменным среды для PythonPython

Программы на Python
Anonymous
Pyenv — переключение между версиями Python и PySpark без жесткого кодирования путей к переменным среды для Python

Сообщение Anonymous »

У меня возникли проблемы с корректной работой разных версий PySpark на моем компьютере с Windows в сочетании с разными версиями Python, установленными через PyEnv.
Настройка:
  • Я установил pyenv и позволил ему установить переменные среды (PYENV, PYENV_HOME, PYENV_ROOT и запись в PATH)
  • Я установил Amazon Coretto Java JDK (jdk1.8.0_412) и установил переменную среды JAVA_HOME.
  • Я скачал winutils.exe и Hadoop.dll отсюда и установил HADOOP_HOME< /em> переменная среды.
  • Через pyenv я установил Python 3.10.10, а затем pyspark 3.4. .1
  • Через pyenv я установил Python 3.8.10, а затем pyspark 3.2.1
Python работает как положено:
  • Я могу переключаться между разными версиями с помощью pyenv global < version>
  • Когда я использую python --version в PowerShell, он всегда показывает версию, которую я установил ранее с помощью pyenv.
Но у меня проблемы с PySpark.
Во-первых, я не могу запустить PySpark через консоль PowerShell, запустив pyspark > >> Термин «pyspark» не распознается как имя командлета, функции, файла сценария.....
Что еще более досадно, мои репо-скрипты (с .venv, созданный с помощью pyenv и поэтики), также не работает:
  • Caused by: java.io.IOException: Cannot run program "python3": CreateProcess error=2, The system cannot find the file specified [...] Причина: java.io.IOException: CreateProcess error=2, система не может найти указанный файл
Однако оба варианта работают после добавления следующих двух записей в переменную среды PATH:
  • C:\Users\ myuser\.pyenv\pyenv-win\versions\3.10.10
  • C:\Users\myuser\.pyenv\pyenv-win\versions\3.10.10\Scripts
но Мне пришлось бы «жестко запрограммировать» версию Python – а это именно то, чего я не хочу делать при использовании pyenv.< /p>
Если я жестко запрограммирую путь, даже если переключусь на другую версию Python (pyenv global 3.8.10), как только я запускаю pyspark в Powershell, версия PySpark 3.4.1 запускается из записи среды PATH для Python 3.10.10. Я также не могу ничего сделать с Python в командной строке, поскольку он всегда указывает на жестко закодированную версию Python, независимо от того, что я делаю с pyenv.
Я надеялся, что смогу запустить < strong>PySpark 3.2.1 из Python 3.8.10, который я только что «активировал» с помощью pyenv глобально.
Что мне нужно сделать, чтобы иметь возможность переключаться между Python установки (и, следовательно, также между PySparks) с pyenv без «жесткого кодирования» путей Python?
Пример сценария PySpark:


Подробнее здесь: https://stackoverflow.com/questions/783 ... ng-environ

Вернуться в «Python»