我的大部分编程都是用Python 3完成的。但现在我需要使用Python成像库(PIL)、ImageMagick和wxPython,所有这些都需要Python 2.x。
我可以要两个Python 2吗?3. Python。Windows 7?当我运行一个脚本时,我如何“选择”哪个版本的Python应该运行它?上述程序是否能够处理同时安装的多个Python版本?我已经花了好几个小时来寻找如何做到这一点,但无济于事。
谢谢。
我的大部分编程都是用Python 3完成的。但现在我需要使用Python成像库(PIL)、ImageMagick和wxPython,所有这些都需要Python 2.x。
我可以要两个Python 2吗?3. Python。Windows 7?当我运行一个脚本时,我如何“选择”哪个版本的Python应该运行它?上述程序是否能够处理同时安装的多个Python版本?我已经花了好几个小时来寻找如何做到这一点,但无济于事。
谢谢。
当前回答
我自己也遇到过这个问题,我把我的启动器放在。bat中,这样你就可以选择你想要启动的版本。
唯一的问题是你的.py必须在python文件夹中,但不管怎样,这里是代码:
对于Python2
@echo off
title Python2 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 23, 24, 25, 26)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
path = %PATH%;C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause
对于Python3
@echo off
title Python3 Launcher by KinDa
cls
echo Type the exact version of Python you use (eg. 31, 32, 33, 34)
set/p version=
cls
echo Type the file you want to launch without .py (eg. hello world, calculator)
set/p launch=
cls
set path = %PATH%:C:\Python%version%
cd C:\Python%version%
python %launch%.py
pause
将它们保存为。bat,并按照里面的说明进行操作。
其他回答
如果你不能让其他任何东西工作,打开一个解释器,无论你选择哪个版本(我更喜欢使用iPython),然后:
import subprocess
subprocess.call('python script.py -flags')
这将使用当前运行的python版本。适用于单个脚本,但如果您运行许多脚本,则很快就会失控,在这种情况下,您可以始终在其中创建一个包含所有这些调用的批处理文件。这不是最优雅的回答,但很有效。
是否有一种方法使别名不同的python版本一个la Linux?
You can install multiple versions of Python one machine, and during setup, you can choose to have one of them associate itself with Python file extensions. If you install modules, there will be different setup packages for different versions, or you can choose which version you want to target. Since they generally install themselves into the site-packages directory of the interpreter version, there shouldn't be any conflicts (but I haven't tested this). To choose which version of python, you would have to manually specify the path to the interpreter if it is not the default one. As far as I know, they would share the same PATH and PYTHONPATH variables, which may be a problem.
注:我使用的是Windows XP。我不知道其他版本是否会有这些变化,但我看不出有任何理由会发生变化。
我刚想到一个有趣的解决办法。虽然Windows不允许您轻松地别名程序,但您可以创建重命名的批处理文件来调用当前程序。
不要重命名可执行文件,这会破坏很多东西,包括pip,而是在与python2.exe相同的目录中创建python2.bat文件。然后添加如下一行:
%~dp0python %*
这个古老的语法是什么意思?嗯,这是一个批处理脚本(bash的Windows版本)。%~dp0获取当前目录,%*将把传递给脚本的所有参数传递给python。
对python3.bat重复此步骤
您也可以为pip和其他实用程序做同样的事情,只需将文件中的python替换为pip或任何文件名。别名将是文件命名的任何内容。
最棒的是,当添加到PATH时,Windows会忽略正在运行的扩展名
python3
将启动python3版本,而命令python2将启动python2版本。
顺便说一句,这与Spyder用于将自己添加到Windows上的路径的技术相同。:)
我使用一个简单的解决方案从一个版本切换到另一个版本的python,你可以安装所有你想要的版本。你所要做的就是创造一些可变的环境。 在我的例子中,我已经安装了python 2.7和python 3.8.1,所以我创建了以下环境变量:
PYTHON_HOME_2.7 = < path_python_2.7 > PYTHON_HOME_3.8.1 = < path_python_3.8.1 > PYTHON_HOME = % PYTHON_HOME_2.7%
然后在PATH环境变量中只放入%PYTHON_HOME%和%PYTHON_HOME%\Scripts。在上面的例子中,我使用的是2.7版本,当我想切换到其他版本时,我只需要设置PYTHON_HOME=%PYTHON_HOME_3.8.1%。 我使用这种方法可以快速地从一个版本切换到另一个版本,同样适用于JAVA、MAVEN、GRADLE、ANT等等。
在另一个上面安装最常用的一个(我的例子是3.3)。这将迫使IDLE使用您想要的那个。
或者(来自python3.3 README):
安装多个版本
On Unix and Mac systems if you intend to install multiple versions of Python using the same installation prefix (--prefix argument to the configure script) you must take care that your primary python executable is not overwritten by the installation of a different version. All files and directories installed using "make altinstall" contain the major and minor version and can thus live side-by-side. "make install" also creates ${prefix}/bin/python3 which refers to ${prefix}/bin/pythonX.Y. If you intend to install multiple versions using the same prefix you must decide which version (if any) is your "primary" version. Install that version using "make install". Install all other versions using "make altinstall".
例如,如果你想安装Python 2.6, 2.7和3.3,其中2.7是 主版本,您将在2.7构建目录中执行“make install” 而其他的则是“make altinstall”。