导航:首页 > 源码编译 > 编译python

编译python

发布时间:2022-01-20 12:43:32

A. python需要编译

一个经常听见的问题,那就是:Python是解释型的语言吗?它会被编译吗?这个问题没有想象中那么好回答。和很多人认识世界一样,习惯以一个简单的模型去评判一些事物。而事实上,里面包含了很多很多的细节。
通常的说法,编译代表着将一个高级语言转化为 CPU 能执行的机器码。当你编译 C 的时候,的确是做的这样的操作。编译的结果是一个二进制可执行文件,这时你的系统可直接运行这个程序。
与此相对的,解释的意思是这样的:程序运行时每次读源文件中的一行代码,并执行相应的操作,就这样一行一行的重复下去。当然,所谓的脚本语言就是这么运行的。
但事实上,上面的定义有太多的局限。一门真正的语言,为了拥有更多有用和强大的特性,通常采用了各种各样的实现方式。我们可以将编译理解为更通用一些:将一种语言转化为另一种语言形式。通常来说,源语言比目标语言要更高级一些,比如将 C 转化为机器码。当然,JavaScript 8 到 JavaScript 5 的转化也算是一种编译。
在Python中,源代码会被编译为更低级的一种形式,我们称之为字节码。字节码是一串指令,和 CPU 的指令集类似。但是字节码并不直接被 CPU 执行,而是在虚拟机中执行的。当然,这里的虚拟机并不模仿整个操作系统的环境,只是提供了字节码执行的一个环境。
下面我们看 Python 的一小段代码以及它对应的字节码
看了字节码的内容后,我们就知道 f'...' 这种格式化字符串的形式的运行原理,就是将里面的字符串转化为一系列的字面字符串与变量,然后使用 + 号连接起来。
dis 是 Python 标准库中反汇编模块,它可以展示 Python 代码的字节码信息。上面提到的执行字节码的虚拟机,可以用任意的语言实现,包括 Python 自己。有兴趣的可以去 GitHub 上看下这个项目 nedbat/byterun 。这个项目可以用来学习,但不适用于生产环境。
不过,我们运行 Python 时完全感受不到它的编译过程,没有显示的调用什么编译程序,仅仅是简单的执行 .py 文件,编译都是需要时自动编译的。这和 JAVA 不同,当你每次写完 JAVA 代码要执行时,都要手动将其编译为 .class 文件,然后执行。也正是这个原因,JAVA 被称为编译型语言,而 Python 被叫做解释型语言。但事实上,两种语言执行时都会先编译成字节码,然后交给虚拟机执行。
Python还有一个重要的特性,就是交互式命令行。你可以敲入一行 Python 语句,然后立刻回车执行。实际上,即使是这个过程,Python 同样是先转为字节码,然后执行。而这个交互式命令行这个特性,在很多编译型语言里是没有的。同样因为没有显示的调用编译程序,很多人将执行Python源文件的程序叫做Python解释器。
即使比较简略,但还是补充下。部分编译型语言比如 C 或者 JAVA 也有交互式命令行,但这些并不是这些语言的重心。JAVA 刚开始是编译成字节码然后执行,后面有了即时编译技术( JIT )可以直接编译成机器码,与 C 类似。
从上面的描述可以看出,不管是解释还是编译,并没法完全分离开来。很多时候,我们想用一些词将现有的编程语言分个类,但事实上要办到这一点太难了。
最后要说明的是,你的代码是怎么执行的只是语言的实现问题,并非语言的特征。上文中,我们讨论的是 Python ,但实际上是 CPython 的描述。CPython 是一个解释器,之所以这么叫,是因为这个解释器是用 C 编写的,这也是 Python 默认的解释器。当然还有其它很多解释器,比如,PyPy 就是另一种解释器,使用了 JIT 技术,运行速度相比 CPython 有较大提升。
回到标题中的问题,Python之所以称为解释型语言,是因为它没有显示的调用编译操作,表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计。
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python需要编译么的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!

B. python如何编译使用源文件

因为系统找不到python.exe,所以说"NO SUCH……“
你需要进入python目录
c:\python25>
这样的状态输入python XXX.py 才会认
当然你也可以在系统变量里面把PYTHON的工作目录添加进去。
另外,py文件最好也放到PYTHON目录,免得python找不到。

另外,由于PYTHON在linux下使用的很多,WINDOWS下应用较少。作者的工作环境就是linux,你看这句#!/usr/bin/python。

针对 拧发条的鸟 和 azaleammm 的回复:
1、对系统(WINDOWS)来说,默认查找目录是当前目录和WINDOWS\ 、windows\system32目录。不在这几个目录中的EXE是提示“XXX不是一个有效的内部或外部命令或可执行程序”(十分抱歉!现在WINDOWS系统说的不是NO SUCH FILE OR DIRECTORY,我和其他的什么系统计混了,感谢azaleammm纠正)
进入PYTHON25目录输入命令可以解决。
对PYTHON来说,默认查找目录是PYTHON25\下的所有子目录。不在这几个目录中提示的是:
“C:\Python25\python.exe: can't open file 'XXX': [Errno 2] No such file or director”
你应该把hellow文件放在PYTHON能够找到的目录,比如C:\PYTHON25\

#!usr/bin/python这句话不是必须的,一般只是LINUX下的作者习惯,我从来都不写
# Filename : helloworld.py 我也从来都不写。
因为LINUX下是不安扩展名而是按文件类型识别文件的,如果文件名不是*.py,LINUX根据这两句注释识别文件类型并自动选择程序打开。

你直接双击的话到是可以执行,但是执行完后他就自动关闭了,所以一闪就没。实际如果你的机器很烂就可以看到屏幕显示了HELLOW WORLD。

如果你实在搞不清楚,就在IDLE中,文件〉新建〉
然后再新窗口中把代码加入进去,然后点击上面的运行(RUN),或者按F5

IDLE 2.5……恕我火星,是python 2.5里面带的那个IDLE吧,版本应该是1.2。
有RUN,啊,当然不是在交互模式下了(交互下从来就没有),是在编辑模式下。
FILE〉NEW WINDOW ,
看看这一贴:
http://..com/question/48354047.html
RUN前PYTHON让你存,你就存,存完交互那里就有了(白底蓝字的HELLO WORLD)

555555明明只是一个HELLOW WORLD而已……为什么说了这么多话。还有什么问题给我发消息。

C. linux下用什么编译python

一般是用GCC来编译
python 在linux下 的编译安装
1、安装
[root@auh1st ~]# cd /usr/local/src/
[root@auh1st src]# ll
总计 0
[root@auh1st src]# wget http://www.python.org/ftp/python/2.6/Python-2.6.tar.bz2
[root@auh1st src]# tar -jxf Python-2.6.tar.bz2
[root@auh1st src]# ll
总计 10724
drwxrwxr-x 17 1000 1000 4096 2008-10-03 Python-2.6
-rw-r--r-- 1 root root 10957859 2008-10-03 Python-2.6.tar.bz2
[root@auh1st Python-2.6]# ./configure --prefix=/usr/local/python-2.6
make && make install
2、检测和设置环境变量
[root@auh1st bin]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@auh1st bin]# PATH="$PATH":/usr/local/python-2.6/bin
[root@auh1st bin]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python-2.6/bin
3、删除系统已有的,将新版本覆盖
cd /usr/bin
rm -rf python
ln -s /usr/local/python-2.6/bin/python ./python
[root@auh1st ~]# python
Python 2.6 (r26:66714, Sep 25 2013, 10:14:04)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "right", "credits" or "license" for more information.
>>>
至此python新版 安装成功

D. python如何编译

编写的话,拿什么编辑器编写都可以。
如果是编译的话,python是不需要编译的,直接运行即可。
运行的话,你需要安装一个python的解释器,可以是官方python,actiePython或者其他版本的python。
然后你可以选择python自带的IDLE编写,也可以在命令行下输入python进入交互shell进行编写,当然也可以用支持python语言的IDE进行编写。

E. 如何编译Python程序

1、说明
编译python程序就是把python脚本转换成操作系统中的可执行文件,一般使用pyinstaller来完成。
2、步骤
1)安装pyinstaller
使用pip install pyinstaller命令来安装
2)编译脚本
python安装目录\script\pyinstaller 脚本文件名
3)完成
执行脚本后就可以在脚本目录生成dist目录,目录就有打包好的可执行文件
3、备注
pyinstaller参数
-w指令
直接发布的exe应用带命令行调试窗口,在指令内加入-w命令可以屏蔽

-F指令
注意指令区分大小写。这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹

-p指令
这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages目录下都是可以被识别的,不需要再手动添加

F. 什么软件可以编译Python

实际上python 是脚本语言解释执行的,并不存在编译这个概念。

python -m py_compile file.py
python -m py_compile {file1,file2}.py
编译成pyc文件。
pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的


python -O -m py_compile file.py
编译成pyo文件。
pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件

还有就是第三方工具如:py2exe, pyinstaller等可把你的脚本打包成执行文件。

1、下载pyinstaller
目前pyinstaller支持的python版本为2.3-2.7,可以到http://www.pyinstaller.org/官网下载。
2、安装
下载完成后,解压即可。
3、pyinstaller使用方法
使用也非常的简单,cmd下进入解压出来的目录,执行如下命令。
python pyinstaller.py [opts] yourprogram.py

主要选项包括:
-F, –onefile 打包成一个exe文件。
-D, –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)。
-c, –console, –nowindowed 使用控制台,无界面(默认)
-w, –windowed, –noconsole 使用窗口,无控制台

更详细的使用方法请参考下载包里的doc目录下的Manual.html文件。

G. 如何编译Python程序生成.pyc文件

pyc文件就是
py程序编译后得到的字节码文件
(py->pyc),python为了提高运行效率也会进行编译,有时候编译出pyc文件后,删除py文件也不会出错助于pyc文件的产生,给楼主举例加入你有一个逻辑文件abcd.py,里面有很多函数A,B,C,D,这个时候,如果你有一个test脚本去导入了abcd.py,只要你运行test脚本,在adcd.py目录下就会生成一个abcd.pyc文件,而不管你是否需要调用A,B,C,D函数

H. python在那里编译和执行

首先python是解释执行的,IDLE是集成开发环境,使用方法:
File->New Window->写代码
Run->Run mole

I. 如何编译Python使之成为可执行程序

Python是一个强大的工具,可惜不是每个人的计算机里面都有安装。当您写了一个好用的工具。要如何让那些没有安装Python的人使用你的工具呢?
对于这样一个需要standalone exectuable环境的需求,直到撰写经验为止,只看到两个比较好用且有持续维护的套件。一个是py2exe。另外一个就是本经验要介绍的PyInstaller。
1
PyInstaller安装

2

最新版本:PyInstaller 2.0
3

直接“解压缩”之后即可使用,解压到您想让他在的路径即可
END

PyInstaller配置

1
事先写好py程序
2

在命令行执行:python Makespec.py --console --onefile NotePad\notepad.py
报错:Configfile is missing or unreadable. Please run Configure.py before building
3

在命令行执行:Configure.py
报错:Python 2.6+ on Windows support needs pywin32,Please install http://sourceforge.net/projects/pywin32/
4

安装最新版本的 pywin32-217.win32-py2.7.exe
END

PyInstaller使用

命令行中运行
目录切换到PyInstaller的安装目录“E:\pyinstaller-1.5\pyinstaller-1.

在PyInstaller的安装目录下新建一个文件夹(比如NotePad), 然后将要转换的py脚本放到文件夹里(notepad.py)
E:\pyinstaller-1.5\pyinstaller-1.5>python Makespec.py --console --onefile NotePad\notepad.py

E:\pyinstaller-1.5\pyinstaller-1.5>python Build.py NotePad\notepad.spec

验证exeE:\pyinstaller-1.5\pyinstaller-1.5>

E:\pyinstaller-1.5\pyinstaller-1.5\NotePad\dist\notepad.exe 0 0 100(成功)

查看生成的文件,生成的中间文件spec
查看生成的文件,生成的最终文件exe

END

注意事项

在转换之前要确保py程序可以正常通过
如果转换过程中出现什么错误,用搜索引擎搜索解决一下

J. 如何在Python中实现多文件编译

如果你要用到那个文件代码,就在主文件里写上import
举个例子
A.py
B.py
我的主模块在A里,A要调用B里的函数或者类,那么在A中写import B.py
这样编译时就会编译用到B中的部分代码。
另外说一句,我对python感觉是运行时用不到的代码,它就不编译。好像是编编译边执行的那种吧

阅读全文

与编译python相关的资料

热点内容
工作三年的大专程序员 浏览:726
java毕业设计文献 浏览:140
筹码集中度指标源码 浏览:477
listsortjava 浏览:182
plc闪光电路编程实例 浏览:297
socket编程试题 浏览:203
华为的服务器怎么设置从光驱启动 浏览:867
程序员真的累吗 浏览:324
学信网app为什么刷脸不了 浏览:871
天蝎vs程序员 浏览:991
单片机下载口叫什么 浏览:188
程序员的道 浏览:926
云服务器不实名违法吗 浏览:558
怎样查看文件夹图片是否重复 浏览:995
文件怎么导成pdf文件 浏览:808
打开sql表的命令 浏览:103
安卓手机如何面部支付 浏览:38
天元数学app为什么登录不上去 浏览:824
明日之后为什么有些服务器是四个字 浏览:104
安卓系统l1是什么意思 浏览:26