Хоча ОП може працювати на платформі nix, ця відповідь може допомогти ненікс-платформам. Я не відчував роботи підходу shebang в Microsoft Windows.
Перефразовано: рядок shebang відповідає на ваше запитання " у моєму сценарії ", але я вважаю, що це лише для Unix-подібних платформ. Незважаючи на те, що саме оболонка Unix, поза сценарієм, насправді інтерпретує рядок shebang, щоб визначити, яку версію інтерпретатора Python викликати. Я не впевнений, але я вважаю, що рішення не вирішить проблему для користувачів платформи Microsoft Windows.
У світі Microsoft Windows спрощення способу запуску певної версії Python без налаштування змінних середовища, спеціально для кожної конкретної встановленої версії Python, полягає лише у додаванні до python.exe префікса шляху, з якого ви хочете його запустити, наприклад C: \ Python25 \ python.exe mymodule.py або D: \ Python27 \ python.exe mymodule.py
Однак вам потрібно буде врахувати змінні середовища PYTHONPATH та інші PYTHON ..., які вказуватимуть на неправильну версію бібліотек Python.
Наприклад, ви можете запустити: C: \ Python2.5.2 \ python.exe mymodule
Проте змінні середовища можуть вказувати на неправильну версію як таку:
ПІФОНПАТ = D: \ Python27
PYTHONLIB = D: \ Python27 \ lib
Безліч жахливих розваг!
Отже, невіртуальним способом у Windows було б використання командного файлу, який встановлює середовище та викликає певний виконуваний файл Python, додаючи префікс python.exe до шляху, в якому він знаходиться. Таким чином, ви отримаєте додаткові дані хоч управляти; наприклад, використання аргументів командного рядка для команди "start" або "cmd.exe" для "збереження та заміни середовища" консолі ", якщо ви хочете, щоб консоль залишалася після виходу програми.
Ваше запитання змушує мене думати, що у вас є кілька модулів Python, кожен з яких очікує певної версії Python. Це може бути вирішене "всередині" сценарію за допомогою модуля запуску, який використовує модуль підпроцесу . Замість виклику mymodule.py ви зателефонуєте модулю, який викликає ваш модуль; можливо, launch_mymodule.py
launch_mymodule.py
import sys
import subprocess
if sys.argv[2] == '272':
env272 = {
'PYTHONPATH': 'blabla',
'PYTHONLIB': 'blabla', }
launch272 = subprocess.Popen('D:\\Python272\\python.exe mymodule.py', env=env272)
if sys.argv[1] == '252'
env252 = {
'PYTHONPATH': 'blabla',
'PYTHONLIB': 'blabla', }
launch252 = subprocess.Popen('C:\\Python252\\python.exe mymodule.py', env=env252)
Я не тестував цього.