9

Distutils 提供现有的解决方案来构建 Windows 自解压 EXE。值得注意的是,即使我在 Ubuntu 上,我也可以创建包(考虑到我们的自动化构建过程,这是必不可少的)。

如何从 Ubuntu 机器构建 osx 安装程序?

(这适用于 python 2.7)

4

5 回答 5

5

Py2app、cx_freeze 和 py2exe 用于创建独立的应用程序,而不是安装程序。

您可以使用 Python distutils 创建包的 zip 文件,然后将 zip 文件包装在自解压并安装包的脚本中,如下所示:http ://www.noah.org/wiki/Self-extracting_Python_Script

或者,如果您想创建一个显示带有点击许可证的 GUI 的安装程序,那么您需要 OS X PackageMaker 来创建一个 mpkg 文件。我认为没有 Linux 等价物。如果您想尝试手动构建 mpkg,请尝试以下答案:PackageMaker for create Mac packages on Windows/Linux

于 2012-05-07T20:34:38.120 回答
4

您可以执行以下操作,因为 OS X 具有 UNIX 基础。(我假设它也有一些标准的实用程序,比如uudecodeunzip。);

  • 使用标准 Python 打包工具(如 distutils)为您的包创建一个 zip 文件。
  • 用于uuencode file.zip file.zip >uu.txt将此 zip 文件转换为文本。
  • 创建一个 shell 脚本。
  • 将由 生成的文本uuencode作为here-document放入该 shell 脚本中,该脚本被馈送到uudecode,以重新创建 zipfile。这应该是 shell 脚本中的第二个命令。第一个命令应该检查必要的实用程序。
  • 使用安装 zipfile 所需的任何 Python 设置工具。
  • 做任何你想要的安装后的东西。
  • 删除 zip 文件。

要安装程序,请运行 shell 脚本。在 UNIX 上,此脚本应以 root 身份运行。不过,不知道 OS X 是如何处理的。下面是一个示例(包含的 zipfile 包含两个只有随机噪声的文件);

#!/bin/sh
# Install script for foo

# Check for special programs that are used in this script.
PROGS="uudecode unzip python"
for P in $PROGS; do
    which $P >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "$(basename $0): The program \"$P\" cannot be found."
        exit 1
    fi
done

uudecode <<"EOF"
begin 644 test.zip
M4$L#!`H``````(<!K$`````````````````$`!P`9F]O+U54"0`#OHZM3ZB.
MK4]U>`L``03I`P``!.D#``!02P,$"@``````A`&L0$EXM>H``@````(```<`
M'`!F;V\O8F%R550)``.XCJU/N(ZM3W5X"P`!!.D#```$Z0,``)DCNBVSM81_
MA%IQ!+LKC\;\19[/E]F!`J2J*2:9B_8#MC^KM*]]9P1]?1Y1@1+/H%Q"'2J'
M,;$7:C9E+WC]%M(BAUFN]4D\$%F63!^CA8O>'0C(-!YD?$\GQ[;M:?@>=A/[
M61XK<A/]\.?!0$QX<5]T\9<ZP$;_?PRMV-3O(NK)/<MTI,!RYA&OWRK6<8%4
M_1!T/+-'7H^V#C[AK)+U?T>UCU."G]D(+JU[8Z#1EI89@'^10B:8.2$$9Q*@
MY:L4MK'^TVF)A5)9\%"/FF+1T@;]8\,I)$CCHHF#E&,D.GVM1=2N];4J?6WR
M0+YH]DXZ"UQ$GVA^F(`5L![=/<ROX]9RQCRWJ=?+G4Y>56[H=8:!:GTA_V;V
M2V$%U5([0D;T19H]P7+^448+^&M3;[/VJDEJ-SU=Q8U=3,IV^<)A>C)]?@XG
M?-9$B@YZGML`!&`\-CP["]B'FC&K7Z)T6K_&W1K5?M&K8D&^'C^J;H[Q4/ST
M(>QL].68#X)_0@`?9<R3#:4Y#A'X-<NT9C\OM3:4[<)`)LEO@E=*/=0U@]VY
M_R!__:Q'_FP3((*8^6JQ"$_H&BIWDD.6<"3D,'<1^=^.9F^2Z7.:OE"1,SV[
M)M(9!&V(4):?M7^JFR^P"!H4U+(*A;U@Z0QA+]5ZIS]B1;K)&@LJ-Y,L9SQ.
M^Q-"&^@#KQG94$L#!`H``````(8!K$#%*"OR``(````"```'`!P`9F]O+V)A
M>E54"0`#O(ZM3[R.K4]U>`L``03I`P``!.D#``!NFMNGLA(C_K!_F=T%?;P3
M#TUC7%4F+!Y#A8<SFK[;E3M.%J`YT>1AVMNJPFOE58Q["7<#AWQFZ!SG_-RW
M*4`@@P.7\>+LGTBNTLH-7)CB(LJDMD)COV5'H]O8G_4I&C:PFTVC%4P=+X*B
M%A^I^$>BO+<!D\&8&GS:&VLQHJJ[!NFW0H5FD6+:'OUT2--U1HXQ2R?JF2,9
M(/@>A(/SU#.78MTFADG`ZZTK!6:Z6\;I`2?D6I;FE=_0V?4>_0MC;$0$P?H%
MDHQ]MCK4;,5W=<IZV<)<`7A_B7<_=U,:X[8/$_&/518\NNBDYS,\<',K2C]9
M4M.5UL/R<\'0E>G#$>`I>/[UX$QM.+T\LF4;D^WF6FX3.(L?2V<5B%5)$!5[
ME47K#7\&D*3Y>I)8#45-HL(!F7+$)%7C9,$_YYL]EG='3BN9W[&9!$.<.U?E
M#0L?=6@%J/32)NAMI48M",_)0#JRR!*Y2P:ZE@JWD)5/#UK!!3]*2M47V1GE
M'X0(FN%_*3BX_X'(6X!ONLKN!U/&_ML-L:^FD/24Q)S*-D8)Z>F4Y^+$]\_'
MB\$$;#D__S_RT(Y]MMK?B#%F1&C`>,)'7:12DX=F)T,/!*^(M*[,^N;6E4";
M31K\AG0@[@4L9MB.`1Z!`%@K5G)P<]0!?P\$RFUC/S:Y_Y\0*:\+$U+JEM%"
M9E!+`0(>`PH``````(<!K$`````````````````$`!@`````````$`#M00``
M``!F;V\O550%``.^CJU/=7@+``$$Z0,```3I`P``4$L!`AX#"@``````A`&L
M0$EXM>H``@````(```<`&````````````*2!/@```&9O;R]B87)55`4``[B.
MK4]U>`L``03I`P``!.D#``!02P$"'@,*``````"&`:Q`Q2@K\@`"`````@``
M!P`8````````````I(%_`@``9F]O+V)A>E54!0`#O(ZM3W5X"P`!!.D#```$
:Z0,``%!+!08``````P`#`.0```#`!```````
`
end
EOF

# Unpack your zipfile
unzip test.zip
# Go into the created subdirectory and install
cd foo
python setup.py install
# whatever post-install stuff you want goes here...
cd ..
rm -rf foo test.zip
于 2012-05-11T22:33:04.213 回答
0

py2app是 py2exe 的 Mac 对应物,但我不知道你是否可以从 Ubuntu 运行它。

于 2012-05-05T16:06:50.880 回答
0

pyinstaller可以创建 OSX 可执行文件,但我自己只在 OSX 上使用过它,所以我不知道它是否适用于 Ubuntu。

我通过阅读kivy的文档了解了这个程序,这里:http ://kivy.org/docs/guide/packaging-macosx.html

我希望其中一些是有帮助的。

于 2012-05-13T20:12:35.440 回答
0

你遇到了和我一样的麻烦。

在麦克上。我敢打赌,除非您确实需要安装驱动程序或某种 DRM,否则您想使用 dmg 包而不是 Installer。

所以我只是假设您想要创建您的 .app 目录并将其打包为 dmg 文件,以便您可以轻松地分发您的应用程序。

要使用 python 代码构建 .app 目录,您可能需要使用 Pyinstaller。优点

  1. 是跨平台。
  2. 在 mac、windows、linux 上运行良好
  3. 您可以在命令行上控制一切。
  4. 它仍在积极发展中。
  5. 它会自动打包所需的依赖项,并且不会与本地机器上安装的 Python 产生冲突。
  6. 良好的文档。

缺点

  1. 新版本和旧版本有点不一致。

要使用 Pyinstaller 构建 .app,这里是相关文档链接

要构建 dmg 文件,您可以使用免费选项但对我来说,DMG Canvas非常有用。

优点

  1. 支持命令行
  2. 支持模板(使用 GUI 创建漂亮的背景和文件夹并在命令行上重用它)
  3. 支持许可协议

缺点

  1. 不免费

据我所知,.py 没有统一的解决方案来构建 .app 文件和 dmg 或安装程序。

所以你应该写一些代码来自动化它,但这很简单,因为它们都支持

命令行。

于 2012-05-14T12:53:03.917 回答