python为什么不能编译
1、在源码 python2.7.3/Moles/Setup.dist 搜索zlib ,打开该模块
2、继续下去,又提示缺少zlib.h,也就是我们的交叉编译库中缺少zlib头文件和库文件
3、在http://www.zlib.net/ 下载zlib源码,交叉编译zlib
由于zlib 编译不支持--host选项,所以在zlib目录下执行如下命令
~/zlib1.2.8/# mkdir _install
~/zlib1.2.8/#CC=arm-xxxxx(你的交叉编译器) ./configure --host=./_install(最好是绝对路径,我偷懒了,这个是安装目录)
~/zlib1.2.8/# make && make install
你会在_install目录下发现include 和 lib 目录
下一步,我们回到第1步
为了防止交叉编译链污染,我们在python目录下创建otherinclude otherlib
把zlib下的include和lib下的内容分别按照对应名字拷贝过来
4.在Moles/setup 找到我们前面setup.dist那句话,添加 -L../otherlib -I../otherinclude 这个应该都懂的
直接make
5,如果你之前make distclean过了,没有setup文件,请修改setup.dist.文件,重新configure!
㈡ 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教程请关注环球青藤其它相关文章!
㈢ Python缂栧啓镄勭▼搴忛渶瑕佺紪璇戦檲鍙镓ц屾枃浠跺悗镓嶈兘杩愯屽悧锛
鍦ㄥぇ澶氭暟𨱍呭喌涓嬶纴Python 绋嫔簭涓嶉渶瑕佽缂栬疟鎴愬彲镓ц屾枃浠跺氨鍙浠ョ洿鎺ヨ繍琛屻侾ython 鏄涓绉嶈В閲婂瀷璇瑷锛屽畠浣跨敤瑙i喷鍣ㄩ愯岃В閲婂苟镓ц屼唬镰併
褰扑綘缂栧啓濂 Python 绋嫔簭钖庯纴鍙浠ョ洿鎺ヨ繍琛屾簮浠g爜鏂囦欢锛堜互 .py 涓烘墿灞曞悕锛夋潵镓ц岀▼搴忋备綘鍙闇阃氲繃锻戒护琛屾垨闆嗘垚寮鍙戠幆澧冿纸IDE锛夌瓑宸ュ叿𨱒ヨ繍琛 Python 鑴氭湰銆
渚嫔傦纴鍦ㄥ懡浠よ屼腑锛屽彲浠ヤ娇鐢ㄤ互涓嫔懡浠ゆ潵杩愯 Python 绋嫔簭锛
python script.py
鍏朵腑 script.py 鏄浣犵殑 Python 婧愪唬镰佹枃浠躲
铹惰岋纴濡傛灉浣犲笇链涘皢 Python 绋嫔簭镓揿寘鎴愪竴涓镫绔嬬殑鍙镓ц屾枃浠讹纴浠ヤ究鍦ㄦ病链夊畨瑁 Python 瑙i喷鍣ㄧ殑鐜澧冧腑杩愯岋纴浣犲彲浠ヤ娇鐢ㄤ竴浜涚涓夋柟宸ュ叿𨱒ュ皢 Python 绋嫔簭缂栬疟鎴愬彲镓ц屾枃浠躲
甯歌佺殑宸ュ叿鍖呮嫭 PyInstaller銆乧x_Freeze銆乸y2exe 绛夈傝繖浜涘伐鍏峰彲浠ュ皢 Python 绋嫔簭鍙婂叾渚濊禆椤规墦鍖呬负涓涓镫绔嬬殑鍙镓ц屾枃浠讹纴浠ヤ究鍦ㄥ叾浠栬$畻链轰笂杩愯岋纴钥屾棤闇瀹夎 Python 瑙i喷鍣ㄣ傝繖镙峰彲浠ユ洿鏂逛究鍦板垎浜鍜屽垎鍙戜綘镄 Python 搴旂敤绋嫔簭銆
镐荤粨璧锋潵锛屼竴鑸𨱍呭喌涓嬶纴Python 绋嫔簭涓嶉渶瑕佽缂栬疟鎴愬彲镓ц屾枃浠跺嵆鍙杩愯屻备絾濡傛灉闇瑕佸湪娌℃湁瀹夎 Python 镄勭幆澧冧腑杩愯岋纴鍙浠ヨ冭槛浣跨敤绗涓夋柟宸ュ叿灏 Python 绋嫔簭镓揿寘鎴愬彲镓ц屾枃浠躲