2013-02-19 3 views
2

У меня есть версии 2.7 и 3.0 интерпретатора Python, установленные (на моей системе Ubuntu 32), но один конкретный скрипт использует 3.0.Как я могу заставить свой скрипт выбрать правильный интерпонтер python?

Использование

#!/usr/bin/python3 -B 

не будет работать, когда программа запускается с python myprogram.py.

И мне также нужно решение, которое работает также и в Windows, где у меня также установлены обе версии python.

Как я могу заставить скрипт работать только с правильной версией python?

+0

вы не можете использовать, так как 'python' по умолчанию для питона-2.x в этом случае , поэтому ваш скрипт уже запущен с ним. – CharlesB

ответ

4

Пожалуйста, используйте virtualenv, что делает изолированную среду Python легкой.

+1

И начиная с Python3.3 [virtualenv попал в стандартную библиотеку] (http://docs.python.org/3.3/library/venv.html) как 'venv' – cfi

0

Пожалуйста, обратите внимание на The wrong python interpreter is called

Вы должны выбрать правильный интерпретатор на основе того, где вы установили нужную версию Python и системные переменные.

+0

Ответ там не дает портативного решения которые работают также под Windows. –

1
python = Python to use. # This has to be the absolute path to Python executable 

os.execl(python, python, * sys.argv) 

Таким образом, вы можете перезапустить скрипт с помощью питона, который вы хотите использовать. Не очень стильно.

+0

Если вы используете варианты exec (p), вы можете запускать команды с вашего пути –

1

Я не знаю, почему вы не можете просто запустить программу с python3 foo.py, но возможно, что программа python2 перезапустится как python3 с чем-то вроде этого.

import sys 
if sys.version_info.major != 3: 
    import os 
    # replace this process with a python3 process 
    os.execlp("python3", "python3", *sys.argv) 

Это плохое решение, хотя, потому что теперь ваша python3 программа не может ничего, что это не действительный синтаксис python2

Смежные вопросы