不少新手朋友遇到的第一个问题,不是Python的数据结构,不是Python的类库使用,更不是第三方模块、框架的应用,而是简单的“如何运行”!那么如何运行python呢?一起来了解下吧:
如何运行python
[图片0]
1. 使用Python自带的IDLE
在开始-->程序-->(视你安装的版本而不同)中找到IDLE(Python GUI),
点击后弹出如下窗体:
在>>>提示符后输入代码,回车,就可以执行此代码。
IDLE支持语法高亮,支持自动缩进,支持方法提示,不过提示的很慢。
2. 在命令行窗口上运行
这种方法的前提是:你在系统的PATH变量中配置了Python的安装路径。
右键我的电脑-->属性-->高级-->环境变量,在系统变量列表中找到Path项,点击编辑按钮,在其中追加“C:Python25;”(路径及版本视你安装而定),保存退出。
开始-->运行-->输入cmd,回车,开启一个CMD窗口。
在DOS提示符>后,输入python,回车,进入Python环境。
它的运行和IDLE基本一致,但是没有了语法高亮、自动缩进、方法提示,唯一的好处就是运行速度比IDLE快了些(如果你告诉我可以加参数运行python,那你就不算新手了,也不用看这篇文章了),所以用处不大。
退出此python环境使用Ctrl + Z,然后回车。
3. 以脚本方式运行
以上两种运行方式虽然简便,但是不适合大量代码的开发,只适合查看单句或少量几句代码的运行结果,或者验证某函数的调用方法,而这恰恰是我们平时调试、验证程序的常用方式。如果是正式的开发,则应该使用独立脚本的方式运行。
打开你的文本编辑器(我是用EmEditor,当然你使用记事本、写字板也都可以),输入python代码,保存成*.py文件,然后双击运行它就可以执行了,当然前提也是必须配置系统PATH变量。
这个小程序的结果会一闪而过,如何让它停驻呢?有两个办法:
l 在其所在目录下开启一个CMD窗口,输入python *.py运行
l 在代码的最后增加如下语句:
raw_input()
然后你再双击运行,结果就会停留在那里,直到你敲击回车键才消失。
Linux下运行Python程序,一般说来有以下两种形式,其实和Windows下基本一样。
一、在IDLE中运行
在终端窗口输入
$ python
进入交互式运行环境,然后就可以边输入边执行代码了:
>>> print 'Hello Python'
Hello Python
>>>
退出使用Ctrl-D。
二、以脚本方式运行
在py脚本所在目录下输入
$ python
即可执行的程序。
另补一句:cd/?查看cd的基本性质
cd(空格)XXX
是进入一个文件目录(文件夹)的命令
cd..是返回上一层文件目录(文件夹)的命令
cd 是直接退回分区根目录(也就是C盘或者D盘不进入任何文件夹)。
Python如何运行程序
Python解释器简介
解释器是一种让其他程序运行起来的程序。Python也有一个名为解释器的软件包,当你编写了一段Python程序,Python解释器将读取程序,并按照其中的命令执行,得出结果。实际上,解释器是代码与机器的计算机硬件之间的软件逻辑层。
当Python包安装在机器上后,它包含了一些最小化的组件:一个解释器和支持的库。根据使用情况的不同,Python解释器可能采取可执行程序的形式,或是作为链接到另一个程序的一系列库。根据选用的Python版本的不同,解释器本身可以用C程序实现,或一些Java类实现,或者其他形式。无论采用何种形式,编写的Python代码必须在解释器中运行。故,首先要在机器上安装Python解释器。
可以根据不同的平台去官网()下载获得对应的Python,安装即可
程序执行
编写或运行Python程序的意义是什么呢?这个取决于你是从一个程序员还是Python编译器的角度去看这个问题。
1、程序员视角
就最简单的形式而言,一个Python程序仅是一个包含Python代码的文本文件。下面是一个经典程序:
1
2
print('hello world!')
print(2 ** 100)
这个文件包含了两个Python打印语句,在标准输出中简单的打印一个字符串和一个数学表达式的结果(2100)。你可以用任何文本编辑器来建立这样的文本文件。按照惯例,Python文件是以.py结尾的。从技术上讲,这种命名方案在被"导入"时才是必须的,为了统一所有的Python文件都以.py命名。我们在命令行运行这两行代码:
也可以将这两行放到一个文件中,然后去执行这个文件:
Python视角
从程序员视角,我们把Python代码保存在一个.py文件中,执行这个文件,标准输出会给我们返回结果。在文件中输入代码,在解释器中执行这些代码。然而,Python运行时,其实还有一些事情发生。
当Python运行脚本时,在代码开始进行处理之前,Python还会执行一些步骤。
1、字节码编译
程序执行时,Python内部会先将源代码编译成字节码的形式。编译是一个简单的翻译步骤,而且字节码是源代码底层的、与平台无关的表现形式。概括来讲,就是Python通过把每一条源代码分解为单一步骤来将这些源语句翻译成一组字节码指令。这些字节码可以提高执行速度。这个过程对于用户来说是完全隐藏起来的。
如果Python进程在机器上拥有写入权限,那么它将程序的字节码保存为一个以.pyc为扩展名的文件。Python这样保存字节码是作为一种启动速度的优化。下一次运行时,如果在上次保存字节码后没有修改过源代码,Python会加载.pyc文件跳过编译这一步。当Python必须重新编译时,它会自动检查源文件和字节码文件的时间戳。
如果Python无法再机器上写入字节码,程序仍然可以工作:字节码将会在内存中生成并在程序结束时丢弃。
2、Python虚拟机(PVM)
[图片1]
一旦程序编译成字节码(或字节码从已经存在的.pyc文件中载入),之后的字节码发送到PVM上执行。PVM不是一个独立的程序,不需要安装。PVM是迭代运行字节码指令的一个大循环,一个接一个的完成操作。PVM是便宜Python的运行引擎,表现为Python系统的一部分,并且它是实际运行脚本的组件。技术上讲,它才是Python解释器的最后一步。
Python的传统运行执行模式:录入的源代码转换为字节码,之后字节码在PVM中运行。代码被自动编译,解释
3、性能的含义
熟悉C和C++这类完全编译语言的话,此时应该已经发现了Python模式中的一些不同之处。其中一个是,在Python的工作中通常没有"build"或"make"的步骤:代码在写好后立即运行。另一个就是Python字节码不是机器的二进制代码,只是特定于Python的一种表现形式。这就是Python代码无法运行的像C或C++代码一样快的原因,PVM循环仍然需要解释字节码,并且字节码指令与CPU指令相比需要更多的工作。另一个因素:和其他经典的解释器不同,这里仍有内部的编译步骤,Python并不需要反复的重分析和重分解每一行语句。实际的效果就是纯Python代码的运行速度介于传统的编译语言和传统的解释语言之间。
4、开发的含义
Python执行模块的另一个情况是其开发和执行的环境实际上没有区别。也就是说,编译和执行源码的系统是同一个系统。这使得开发周期大大缩短。在程序开始执行之前不需要预编译和连接;只需要简单地输入并运行代码即可。这同样是Python具有更多的动态语言特性:在运行时,Python程序去构建并执行另一个Python程序是有可能的,而且是非常方便的。eval和exec内置模块,能够接受并运行包含Python程序代码的字符串,这种结构是Python能够实现产品定制的原因:因为Python代码可以动态地修改,用户可以改进系统内部的Python部分,而不需要拥有或编译整个系统的代码。
其实只要牢记一点,Python真正拥有的只有运行时,完全不需要初始的编译阶段,所有的东西都是在程序运行时发生的。
执行模块的变体
前面提到的Python传统运行执行模式反应了Python的标准实现形式,实际上并不是Python语言本身所必须的。执行模块在演变。
1、Python实现的替代者
Python语言有三种主要的实现方式:CPython、Jython和IronPython以及一些次要的实现方式,如,Stackless Python。简单来说,CPyhton是标准的实现,其他的都是由特定目标和角色的。这些东西都是用来实现Python的,只是通过不同的方式执行程序罢了。
2、执行优化工具
CPython、Jython和IronPython都是通过同样的方式实现Python语言的,即通过把源代码编译为字节码,然后在合适的虚拟机上执行这些字节码。然而,其他的系统,包括Psyco即时编译器以及Shedskin C++转换器,则试着优化了基本执行模块。
a、Psyco实时编译器
Psyco系统并不是Python的另一种实现方式,而是一个扩展字节码执行模块的组件,可以让程序运行的更快。Psyco是一个PVM的增强工具,这个工具收集并使用信息,在程序运行时,可以将部分程序的字节码转换成底层的真正的二进制机器码,实现更快的执行速度。在开发过程中,Psyco无需代码的修改或独立的编译即可完成这一转换。
b、Shedskin C++转换器
Shedkin是一个引擎系统,它采用了一种不同的Python程序执行方法:它尝试将Python代码变成C++代码,然后使用机器中的C++编译器将得到的C++代码编译为机器代码
3、冻结二进制文件
有时候人们需要一个"真正的"Python编译器,实际上他们真正需要的是得到一种能够让Python程序生成独立的可执行二进制代码的简单方法。这是一个比执行流程概念更接近于打包分发概念的东西,但是二者之间或多或少有些联系。通过从网络上获得一些第三方工具,将Python程序转为可执行程序(在Python世界中称作冻结二进制文件)是有可能的
冻结二进制文件能够将程序的字节码、PVM以及任何程序所需要的Python支持文件捆绑在一起形成一个单独的文件包。过程会有些不同,但实际的结果将会是一个单独的可执行的二进制程序,这个程序可以很容易地向客户分发。
现如今,主要有三种系统能够生成二进制文件:py2exe(Windows下使用)、PyInstaller(和py2exe类似,它能够在Linux及Unix上使用,并且能够生成自安装的二进制文件)以及freeze(最初始的版本)。
冻结二进制文件与真实的输出结果有所不同:它们通过虚拟机运行字节码。因此,如果离开了必要的初始改进,冻结二进制文件和最初的源代码运行速度完全相同。冻结二进制文件并不小(包括PVM),但是以目前的标准来衡量,它们的文件也不是特别大。因为在冻结二进制文件中嵌入了Python,接收端并不需要安装Python来运行这些文件。此外,由于代码嵌入在冻结二进制文件中,对于接受者来说,代码都是隐藏起来的。
对商业软件的开发者来说,单文件封装的架构特别有吸引力。
4、其他执行选项:还有一些其他的方案可以用来运行Python程序,可以关注相关的网站来了解它们
如何运行Python程序
1 直接在命令行里运行:
这里要分不同的操作系统平台,主要是windows和linux,unix等系统。
windows的话:在DOS窗口里,输入python就可以进入python的运行窗口,然后在里面写代码。
说明路径不对,这个时候你要用DOS命令切换到python的安装目录,比如我电脑的python是安装在D盘python目录下
现在就可以进去python的交互式命令里写代码了。
非windows系统,比如linux或者unix系统,很多都会自动给你安装python的运行环境,你只要在shell目录下输入python就可以看到
python交互式命令行的环境了。
这种在交互式命令行里写代码有个好处就是基本上不用每次刻意的输入print这个语句,你按回车。系统就会自动的
打印结果。
2 直接保存成文件的形式运行:
你把写好的文件放到保存成.py的后缀,比如你保存写了几行python代码。保存成的文件名放到到d:pythoner。
那文件的路径就是d:。如果你要运行的话,只需要在dos里,输入python d:
或者是你进入到这个目录,然后运行脚本:python 。
linux,unix等其他的系统也是差不多的。
3 ide运行:
我现在用的ulipad编辑器,可以在里面写好代码,然后按F5就可以运行代码了,很多IDE的软件都会集成一个内置的python运行环境,
你只要在里面写好程序,然后直接按照编辑器提示的命令就可以了。
运行Python代码的方法
PyPy
在选择CPython的简易替代语言时,PyPy无疑是最佳之选(如Quora就是由它编写而成)。由于与现有Python代码保持高度兼容性,PyPy也是默认程序运行时的一个很好选择。
PyPy使用了Just-in-Time(JIT)即时编译器,即动态编译器,与静态编译器(如gcc,java等)不同,它是利用程序运行的过程的数据进行优化,拥有同谷歌Chrome V8 Javascript引擎相同的语言加速技术。本月初,最新版本PyPy 即将发布,此版本会有一系列的性能改进,提供更全面的如NumPy的支持,用于加速Python性能的共享库。
Python 必须由单独的PyPy3项目构建而成。不过,对于边缘语言特性 爱好者来说,尽管预期支持,但实际此版本最多仅支持及以下版本。
Pyston
Pyston是一款Dropbox推出的新的基于JIT的Python实现,使用LLVM编译器实现代码解析与转换。与PyPy相比,Pyston仍处于初级阶段,目前最新版本为Pyston 版,支持有限子集语言的相关特性。Pyston的主要工作包括支持语言的核心功能及提升关键指标性能到一个可接受的水平。不久后,Pyston就可以被认为是远程生产就绪语言。
Nuitka
Nuitka 是一个Python的替代品,一些团队正用它做完全的Python编译工具,并尝试将Python代码转译为其它可高速运行的编程语言。Nuitka()可以将python代码转换为C++代码,然后编译为可执行文件,并通过直接调用python的api的方式实现从解析语言到编译语言的转换,并且在转换到C++的过程中直接使用python的解释器,可以保证100%的语法兼容。虽然这限制了它的可移植性,但不可否认这个转换的速度获得了肯定。
Cython
Cython是Python 的C语言扩展。准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的编译器:先将 Cython代码转变成C(自动加入了一大堆的C-Python API),然后使用C编译器编译出最终的Python可调用的模块。不过Cython的缺点是,你并不能真正编写Python代码,这样一来,现有代码将不会完全自动转移成功。
也就是说,Cython在提速方面有很大优势,它是一个用来快速生成Python扩展模块(extention module)的工具。而在Cython,C里的类型,如int,float,long,char*等都会在必要的时候自动转成python对象,或者从python对象转成C类型,在转换失败时会抛出异常,这正是Cython最神奇的地方。另外,Cython对回调函数的支持也很好。总之,如果你有写python扩展模块的需求,那么Cython真的是一个很好的工具。
Numba
Numba综合了前两种方法,是Cython的竞争项目。同样的,numba把Python源码通过LLVMPy生成JIT后的.so文件来加速。不同点在于,Numba是以JIT为主的,加速对源码的侵入性较小。而Cython则重点在加速高性能Python模块的开发上,不依赖LLVMPy项目。此外numba还很不成熟,目前兼容性相当差。
相关链接:/
