Вопрос по python – Как использовать несколько версий Python без удаления

10

Я столкнулся с уникальной ситуацией, немного тривиальной, но болезненной.

Мне нужно использовать Python 2.6.6, потому что NLTK не портирован на Python 3 (это то, что я мог бы собрать).

В другом коде (который работает одновременно) есть функция счетчика коллекций, которая доступна только в Python 3, но не в Python 2.6.6.

Итак, каждый раз, когда я переключаюсь между двумя кодами, мне нужно устанавливать и удалять версии. Это такая пустая трата времени.

Любые предложения о том, как мне указать, какую версию я хочу использовать?

Какой ос ??????? Jakob Bowyer
Просто установите несколько версий. David Heffernan
Python 2 и 3 могут быть установлены бок о бок. Почему вам нужно удалить и переустановить? Mark Byers
Windows. Да, это может быть установлено бок о бок. Но, может быть, это глупый вопрос - как вызвать соответствующую версию (оболочку) из кода Python? Когда я говорю запустить модуль, он всегда работает на 3.0, который выдает ошибку для nltk. Learnerbeaver
Просто верни путь. Вы можете использовать разные python в окне легко Thai Tran

Ваш Ответ

15   ответов
16

Установите Python 3

Python 3.3 и выше положитьpy.exe в папку Windows. ссылк] Этот исполняемый файл используется для определения версии Python с первой строкой файла:

#!/usr/bin/python2.7

будет выполняться с Python 2.7. Вы должны установить версию Python 3 после установки других версий Python.

Дополнительные ресурсы:https: //docs.python.org/3/using/windows.html#customizatio

Pywin https: //pypi.python.org/pypi/pywi

Старое решение

Думаю, ты используешь окна. Я решил эту проблему с помощью взлома:

Каждый раз, когда я запускаю python на windows, будет использоваться python.bat. Это запускает python.py, который анализирует файл для заголовка после # для версии на питоне.

Для запуска example.py я набираю в консоли

python example.py

но это также можно запустить за Klick.

это мой файл Python C: \ bin \ python.py

#!/usr/bin/env python2
import sys
import os
args = sys.argv
if len(args) <= 1:
    # no arguments
    # start python console
    i = os.system('C:\bin\python2.bat' + " ".join(args[1:]))
    if type(i) != int:
        i = 0
    exit(i)

def analyse(filename, default = ''):
    '''=> '2', '3', default '''
    try:
        f = open(filename)
    except IOError:
        # file not found
        return default
    firstLine = f.readline()
    if firstLine.startswith('#!'):
        if 'python2' in firstLine:
            return '2'
        if 'python3' in firstLine:
            return '3'
        i = firstLine.find(' ')
        if i != -1:
            # analyse from end of path on
            in2 = '2' in firstLine[i:]
            in3 = '3' in firstLine[i:]
            if in2 and not in3:
                return '2'
            if in3 and not in2:
                return '3'
        else:
            # analyse path
            in2 = '2' in firstLine
            in3 = '3' in firstLine
            if in2 and not in3:
                return '2'
            if in3 and not in2:
                return '3'
    return default



no = analyse(args[1], default = '2')
if args[1][-1:] == 'w':
    # python win
    cmd = 'C:\bin\pythonw%s.bat'
else:
    cmd = 'C:\bin\python%s.bat'
i = os.system(cmd % no + ' ' + " ".join(args[1:]))

if type(i) != int:
    i = 0
exit(i)

Это файл C: \ bin \ python.bat

@echo off
C:\bin\python2 C:\bin\python.py %*
rem this may also work:
rem C:\bin\python.py %*

и в каждом файле, который вы запускаете, вы должны поставить либо

#!/bin/env/python3

ил

#!/bin/env/python2

по умолчанию это python2

Затем я добавил эти файлы в папку:

C: \ Bin \ python2.bat

@echo off
C:\python27\python.exe %*

C: \ Bin \ pythonw2.bat

@echo off
C:\python27\pythonw.exe %*

C: \ python3.bat

@echo off
C:\python32\pythonw.exe %*

C: \ Bin \ pythonw3.bat

@echo off
C:\python32\pythonw.exe %*

Если вместо этого вы используете python26, если python27, вам нужно изменить

C:\python27 

К

C:\python26

и так далее. То же самое с python, не использующим python 32.

Вы также можете запускать файлы Python для Klick

затем сделай это:

щелкните правой кнопкой мыши на файле .py -> откройте с помощью -> выберите C: \ bin \ python.bat

Если у вас возникли проблемы, свяжитесь со мной или оставьте комментарий.

Отличное решение для взлома Windows. Lennart Regebro
Если вы установите Python 3 в качестве последней версии, он распознает#! под Windows User
9

а затем запускаете программу python с той версией Python, которую вы хотите использовать. Вот так

C:\Python26\Python.exe thescript.py

Или похожие

То, что делает virtualenv, - это то, что он дает вам много отдельных «виртуальных» установ та же версия Python. Это совершенно другая проблема, и, следовательно, она вам никак не поможет.

virtualenv также может работать с различными версиями Python, поэтому, когда у вас активен virtualenv,python указывает на Python-версию этого virtualenv. Так что это не совсем неактуально, хотя, вероятно, излишне. Thomas K
@ ThomasK: Да, но это не решает его проблему, и нет необходимости решать его проблему. Это так же актуально, как кофе. Это хорошее дополнение, но на самом деле ничего не решает. Lennart Regebro
Если вы делаете это, знает ли запущенный вами питон, чтобы искать в соответствующей папке пакеты и т. Д.? Или Python 2.6 будет выглядеть в C: \ Python33 \ Scripts, потому что это то, что находится в моем PATH? LarsH
@ LarsH: это знает. Нет, он не будет искать модули в вашем PATH. Он будет выглядеть в вашей PYTHONPATH, поэтому не устанавливайте его глобально. Lennart Regebro
6

кто использует Windows, если вы не против использования PowerShell, вы можете установить Python 2 и 3 отдельно, как указано в других ответах. Тогда вы можете сделать это:

Set-Alias python27 [some path]\python27\python.exe 
Set-Alias python33 [some path]\python33\python.exe

Чтобы создать псевдоним для запуска каждой версии.

Сохранение псевдонимов описано в этой ссылке:https: //msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_aliases#saving-aliase

Для успешной загрузки профиля, который вы создадите по этой ссылке, вам может потребоваться изменить политику выполнения.

Set-ExecutionPolicy RemoteSigned

должен сделать свое дело, но если вы хотите узнать больше о политиках выполнения, вы можете перейти по этой ссылке:https: //msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_execution_policie

Для cmd.exe используйте Doskey.com (это действительно PE exe, а не DOS com). Консоль Windows поддерживает псевдонимы, связанные с именем образа каждого присоединенного процесса. Вы можете загрузить псевдонимы из файла, используя Doskey's/macrofile вариант. Например, файл[cmd.exe] раздел может иметь строкуpython3=C:\Python34\python.exe $*. Добавьте команду doskey в скрипт cmd, загруженный изAutoRun значение вHKCU\Software\Microsoft\Command Processor. Вы также можете добавить[python.exe] раздел для псевдонимов в интерактивном режиме. eryksun
5

который позволяет создавать динамические среды Python. Проверьте страницу питона здесь.

http: //pypi.python.org/pypi/virtualen

Связанный ответ на вопрос об установке пакетов внутри virtualenv на окнах (в отличие от общесистемных) Могу ли я установить пакеты Python для windows в virtualenvs?

1

Virtualenv. Я узнал об этом отэт сообщение в блоге, в котором говорится оpip а такжеfabric, также очень полезные инструменты для разработчика Python.

1

collections.Counter, который работает для Python 2.6:

http: //code.activestate.com/recipes/576611
2

Pythonbrew, он очень прост в установке и позволяет очень легко устанавливать и переключаться между различными версиями Python или временно использовать их безопасно.

Как только Pythonbrew установлен:

#to install new python versions is as simple as:
pythonbrew install 2.7.2 3.2
#to use a particular version in the current shell:
pythonbrew use 3.2
#to uninstall:
pythonbrew uninstall 2.7.2
1
0

s). Установщики изhttp: //python.org автоматически помещает их в:

c:\Python26
c:\Python27
c:\Python32

а такж

c:\Python24

на одной машине. Я в основном использую Python 2.7, потому что некоторые приложения используют wxPython, а также для более старого кода консоли. Этоpython.exe не был переименован. Кстати,Python 2.7 также поддерживаетcollections.Counter.

Thec:\Python26 а такжеc:\Python24 не включены в мой ПУТЬ. Вc:\Python32\, exe был переименован в py.exe. Сюда,python some.py запускает Python 2.7 иpy another.py запускает Python 3.2.

1

особенно сейчас, когда в NLTK есть порт py3.x. видеть Установите nltk 3.0 в Ubuntu 13.10, используя tar.gz download

Вот как можно заставить Python3 работать с NLTK.

$ sudo apt-get install python3-pip
$ sudo pip3 install pyyaml
$ wget http://www.nltk.org/nltk3-alpha/nltk-3.0a3.tar.gz
$ tar -xzvf nltk-3.0a3.tar.gz
$ cd nltk-3.0a3/
$ sudo python3 setup.py install
$ python3
>>> import nltk
>>> from nltk.corpus import brown
>>> print(brown.sents()[0])
['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', 'Friday', 'an', 'investigation', 'of', "Atlanta's", 'recent', 'primary', 'election', 'produced', '``', 'no', 'evidence', "''", 'that', 'any', 'irregularities', 'took', 'place', '.']
0

как в linux, если вы устанавливаете python 3, вы можете вызвать его отдельно с помощьюpython3 команда. Python 2 просто вызывается с помощьюpython.

По крайней мере, это мой опыт работы с системами, похожими на Ubuntu, я не использовал другие среды Linux.

Я понимаю, что этому вопросу уже почти год, но NLTK был портирован на Python 3 (или, по крайней мере, это было правдой на момент написания этого).

0

когда у виртуальной машины, которую установил мой Ops, был Python 2.6 в /usr/bin/python2.6, и мне понадобилось 2.7 для некоторых функций. Он установил его для меня по адресу /usr/bin/python2.7

Мой старый Шебанг:

#!/usr/bin/env python

перестала работать, потому что / usr / bin / python была ссылкой на /usr/bin/python2.6. Решение проблемы и работа в Windows, Linux и OSX привели к тому, что шебанг изменился на:

#!/usr/bin/env python2.7

Я думаю, это должно работать для любой версии.

0

переименуйте файл в том месте, где находится ваш путь, например:

0

WinPython, хороший переносимый / устанавливаемый дистрибутив Python для Windows.

Портативный: предварительно настроенный, он должен работать "из коробки" на любом компьютере под Windows (без каких-либо требований), и папку, содержащую WinPython, можно переместить в любое место (локальное, сетевое или съемное) с большинством параметров приложения

Гибкая: можно установить (или я должен написать «использовать», поскольку он переносим) столько версий WinPython, сколько необходимо (например, изолированные и самосогласованные среды), даже если эти версии работают под разными версиями Python (2.7, 3.3) или отличаются архитектуры (32-битные или 64-битные) на одном компьютере

Это также позволяет легко регистрировать и отменять регистрацию данной версии Python в качестве версии по умолчанию для системы.

Но даже работая как переносимый, вы можете сделать ярлык исполняемого файла python и поместить его где-нибудь на своем пути. Просто назовите ярлыки разных версий разными именами. Тогда вы можете просто использовать:

python_3_64bit_shortcut your_program.py
0

который устанавливается вместе с python:

py -2    # default python 2
py -2.7  # specifically python 2.7
py -3    # default python 3
py -3.7  # specifically python 3.7

Если вам нужно выполнить скрипт с определенной версией, вы можете сделать следующее:

py -3.7 my_script.py

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