怎么把python程序安装到别人电脑上_用Python写好的程序如何在其他计算机上运行?...

这属于一个“软件发布”的问题。

先讨论最简单常见的情况:

====================

Windows 平台

Python 2.7.9(Python 2最新版)

py2exe 是最好的选择。

1. 安装py2exe

可直接到这里下载

应选择Python对应的版本。例如我们的Python是32位的2.7.9,则下载

py2exe-0.6.9.win32-py2.7.exe

如果你安装的Python是64位的,则下载

py2exe-0.6.9.win64-py2.7.amd64.exe

查看Python是32位还是64位,只需到命令提示符下运行:

python -c "import sys;print '%x' %sys.maxint"

32位的Python会输出7fffffff,64位的Python会输出7fffffffffffffff

注意我们关注的是Python的版本而不是Windows的版本。

一般说来,处于兼容性的考虑,应该安装32位的Python,否则编译好的程序将无法在32位的Windows下运行。

2 准备你的Python程序

需要确保你的Python程序能够正常运行。

例如我们的程序叫hello.py,里面的内容就一句话:

print 'Hello,Python'

3 准备setup.py

你需要告诉py2exe转换时所需要的设置。

在同一个目录下新建一个文件,比如叫build.py,写入以下代码:

from distutils.core import setup

import py2exe

setup( console=['hello.py'],

zipfile = None,

options = {'py2exe' : {

"bundle_files": 1,

"dll_excludes": ["MSVCP90.dll","w9xpopen.exe"]

}

}

)

build.py 包含了许多设置。包括你自己的Python程序的文件名,是否创建独立的应用程序等。如果想把这个build.py用到其他Python程序,只需要修改console=['hello.py'],中的'hello.py'即可。

4 生成可执行文件

在命令行下运行:

python build.py py2exe

屏幕会输出大量的信息。如果工作正常,会以以下信息结束:

当前目录下会产生两个目录,dist和build。目录build含有转换时所需要的临时文件;dist含有最终转换的结果。

可以把dist目录下的hello.exe拷给别人了,它不需要对方的电脑上安装Python。

5 一点儿背景知识

仅仅是输出'Hello Python',最终得到的hello.exe却有5M之巨。py2exe 的原理,简单的说就是把一个迷你的Python和你的程序捆绑在了一起。在其他计算机上运行时,就相当于先快速‘安装’了一个Python,只不过对方感觉不到而已。

===================== 更新 =====================

6 关于Python3

py2exe 项目对于Python2和Python3发布了互不兼容的安装包。

对于Python3,通过easy_install或者pip在线安装py2exe即可,或者到下面的网址下载安装包。

对于Python3的py2exe,除了与Python2相同的build.py的方式,还有一种简单直接的方法,适用于不需要额外配置的情况。例如你的Python程序叫做hello.py,在命令行输入

\Scripts\build_exe hello.py -b 0 -c

其中,指你Python3的安装目录,选项-b 0含义为“创建单一可执行文件”,-c的含义是“对可执行文件进行压缩”

此时会在dist/目录下出现hello.exe。是不是很方便?

===================== 更新 =====================

6 关于GUI应用程序的编译封装6.1 wxPython

不需要额外的处理。

如果不愿意弹出console窗口的话,可在build.py里将“console=['hello.py']”改成“windows=['hello.py']”,即

from distutils.core import setup

import py2exe

setup( windows=['hello.py'],

zipfile = None,

options = {'py2exe' : {

"bundle_files": 1,

"dll_excludes": ["MSVCP90.dll","w9xpopen.exe"]

}

}

)6.2 PyQt4build.py 需要增加sip。另外,鉴于文件较大,最好进行压缩。示例build.py:

from distutils.core import setup

import py2exe

setup( windows=['hello.py'],

zipfile = None,

options = {'py2exe' : {

"bundle_files": 1,

"dll_excludes": ["MSVCP90.dll","w9xpopen.exe"],

"includes": ["sip"],

"compressed": 1,

"optimize": 2,

}

}

)鉴于py2exe是使用扫描import的方法自动决定打包的文件,因此,下面的代码,虽然以脚本方式可以运行,但是编译后会产生QtCore无法找到的错误:

#!/usr/bin/python

from PyQt4.QtGui import *

if __name__ == '__main__':

app = QApplication([])

w = QWidget()

w.show()

app.exec_()正确的做法是按照Qt本身的依赖,写完所有所依赖的module:

#!/usr/bin/python

from PyQt4.QtCore import *

from PyQt4.QtGui import *

if __name__ == '__main__':

app = QApplication([])

w = QWidget()

w.show()

app.exec_()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值