选择不同的python版本来运行代码

时间:2013-11-07 17:32:05

标签: python windows

a)如果我选择Python 2.5,我有一个可以正常运行的代码但是在使用python 2.7时它会给我带来错误。我通过选择python 2.5作为默认程序轻松修复了Windows中的问题。但是,似乎cmd不遵循这一变化。我怎么能解决这个问题?

b)使用python.exe与pythonw.exe运行脚本有什么区别?我在某处读到使用pythonw.exe时,我不会看到弹出并消失的cmd窗口。但对于我的情况,这不是真的,我实际上看到了cmd窗口。另外,如果我使用python.exe,运行我的脚本会出错,但是当我使用pythonw.exe时则不会。

3 个答案:

答案 0 :(得分:0)

你可以使用virtualenv& virtualenvwrapper程序,使用virtualenv,您可以选择您选择的python环境。

例如,如果你想用python 2.7执行“App A”,你可以用virtualenv(Debian的例子)来做它

安装软件包

apt-get update
apt-get install python-pip git 
pip install virtualenv virtualenvwrapper

配置virtualenvwrapper

cat << EOF >> ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
EOF
source ~/.bashrc

准备应用环境

mkvirtualenv --no-site-packages -p /usr/bin/python2.7 app_a
add2virtualenv /opt/app_a

运行您的应用

workon app_a
yourscrypt.py

$HOME/.virtualenvs/app_a/bin/python yourscript.py

答案 1 :(得分:0)

在不同的Python版本之间轻松切换的常用方法是使用virtualenv。但是,在您的情况下,您已更改.py扩展名的文件关联。但是您尚未修改PATH环境变量。因此,当您双击.py文件时,您将获得所需的Python版本。但是当您在命令行执行python script.py时,PATH变量用于查找PATH,系统会找到错误的变量。您可以通过修改PATH变量来解决此问题。但是,virtualenv会更好!

pythonw.exe和python.exe的区别?前者针对WINDOWS子系统,后者针对CONSOLE子系统。您通常将前者用于GUI程序,后者用于控制台程序。有关子系统的更多信息可以在MSDN上找到:/SUBSYSTEM

Python documentation也从Python的角度介绍了这个主题:

  

默认情况下,python.exe将执行Python脚本(扩展名为.py的文件)。此可执行文件打开一个终端,即使程序使用GUI也会保持打开状态。如果您不希望发生这种情况,请使用扩展名.pyw,默认情况下将导致脚本由pythonw.exe执行(两个可执行文件都位于Python安装目录的顶层)。这会在启动时抑制终端窗口。

如果在运行pythonw时看到控制台窗口,那么您要么从现有的控制台窗口开始,要么您的程序正在创建一个。为什么你的程序在通过python而不是pythonw运行时会失败?我不知道。您没有显示您的程序或错误,我的水晶球目前正在维修! ; - )


说完所有这些,并试图回答你提出的问题,我认为你并没有以正确的方式解决你的问题。在我看来,正确的解决方案是修复你的代码,使其在Python 2.7中运行。

答案 2 :(得分:0)

假设:你提到python(w).exe和cmd,所以你最有可能在windows上。

  1. 你可能在IDE的某个地方选择了“use python 2.n”(无论你使用哪一个)。只要您只从那里执行脚本,那就可以正常工作。在这种情况下,从系统上的任意其他位置,Windows(或任何其他OS)都使用环境变量PATH。 (右键单击“我的电脑”&gt;高级&gt;环境变量或其他内容)。它可能包含python27.exe C:/ Python27的路径,将其更改为C:/ Python25。如果使用多个目录,则优先使用第一个顺序。

  2. pythonw.exe是一个与Mark Hammond早期pywin32开发相关的自定义可执行文件我相信,是的,它应该在启动时压缩控制台窗口。