如何在不卸载的情况下使用多个版本的Python

Lea*_*ver 12 python version nltk python-3.x

我面临着一种独特的情况,有点微不足道但很痛苦.

我需要使用Python 2.6.6,因为NLTK没有移植到Python 3(这是我可以收集的).

在一个不同的代码(它同时工作)中,有一个集合计数器函数,它只在Python 3中可用,但在Python 2.6.6中不可用.

所以,每次我在两个代码之间切换时,我都需要安装和卸载版本.那是浪费时间.

有关如何指定我想使用哪个版本的任何建议?

Use*_*ser 17

安装Python 3

Python 3.3及更高版本将一个py.exe放入windows文件夹.[ link ]此可执行文件用于确定文件第一行的python版本:

#!/usr/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

将使用Python 2.7执行.安装其他Python版本后,必须安装Python 3版本.

其他资源:https://docs.python.org/3/using/windows.html#customization

pywin https://pypi.python.org/pypi/pywin

旧解决方案

我猜你用的是windows.我用黑客解决了这个问题:

每次我在Windows上启动python时都会使用python.bat.这将启动一个python.py,它在#之后分析文件的头部!对于python版本.

要启动example.py,我键入控制台

python example.py
Run Code Online (Sandbox Code Playgroud)

但也可以每次点击开始.

这是我的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)
Run Code Online (Sandbox Code Playgroud)

这是C:\ bin\python.bat文件

@echo off
C:\bin\python2 C:\bin\python.py %*
rem this may also work:
rem C:\bin\python.py %*
Run Code Online (Sandbox Code Playgroud)

在你开始的每个文件中,你必须放置任何一个

#!/bin/env/python3
Run Code Online (Sandbox Code Playgroud)

要么

#!/bin/env/python2
Run Code Online (Sandbox Code Playgroud)

默认是python2

然后我将这些文件添加到该文件夹​​:

C:\ BIN\python2.bat

@echo off
C:\python27\python.exe %*
Run Code Online (Sandbox Code Playgroud)

C:\ BIN\pythonw2.bat

@echo off
C:\python27\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)

C:\ python3.bat

@echo off
C:\python32\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)

C:\ BIN\pythonw3.bat

@echo off
C:\python32\pythonw.exe %*
Run Code Online (Sandbox Code Playgroud)

如果你使用python26而不是python27那么你需要改变

C:\python27 
Run Code Online (Sandbox Code Playgroud)

C:\python26
Run Code Online (Sandbox Code Playgroud)

等等.与不使用python 32的python相同.

你也可能要开始每Python文件克利克

然后这样做:

点击.py文件 - >打开 - >选择C:\ bin\python.bat

如果您遇到问题,请与我联系或发表评论.

  • 如果你安装python 3作为最后一个版本,它将识别Windows下的`#!` (2认同)

Len*_*bro 9

您只需在单独的目录中安装多个版本,然后使用您要使用的Python版本运行python程序.像这样:

C:\Python26\Python.exe thescript.py
Run Code Online (Sandbox Code Playgroud)

或类似的.

virtualenv所做的是它为您提供了许多相同python版本的 "虚拟"安装.这是一个完全不同的问题,因此它不会以任何方式帮助你.


小智 6

对于那些使用Windows的人,如果你不反对使用PowerShell,你可以单独安装python 2和3,如其他答案所述.然后你可以这样做:

Set-Alias python27 [some path]\python27\python.exe 
Set-Alias python33 [some path]\python33\python.exe
Run Code Online (Sandbox Code Playgroud)

为运行每个版本创建别名.

保持别名在此链接中描述:https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about/about_aliases#saving-aliases

为了成功加载您创建该链接的配置文件,您可能需要更改执行策略.

Set-ExecutionPolicy RemoteSigned
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩,但如果你想了解更多关于执行政策的信息,你可能想要关注这个链接:https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.core/about /参阅about_Execution_Policies


Bry*_*yan 5

使用virtualenv,它允许您创建动态python环境.在这里查看python的页面.

http://pypi.python.org/pypi/virtualenv

关于在windows上安装virtualenv中的软件包的相关问题(与系统范围相对)我可以在virtualenvs中安装Python windows软件包吗?