Bạn có thể làm như sau, vì OS X có nền tảng UNIX. (Tôi giả sử nó cũng có một số tiện ích tiêu chuẩn như uudecode
và unzip
.);
- Tạo tệp zip cho gói của bạn bằng các công cụ đóng gói chuẩn của Python, như các dấu rãnh.
- Sử dụng
uuencode file.zip file.zip >uu.txt
để chuyển đổi tệp zip này thành văn bản.
- Tạo tập lệnh shell.
- Đặt văn bản được tạo bởi
uuencode
dưới dạng here-document trong tập lệnh shell đó, được cấp cho uudecode
, để tạo lại tệp zip. Đây sẽ là lệnh thứ hai trong shell-script. Các lệnh đầu tiên nên kiểm tra các tiện ích cần thiết.
- Sử dụng bất kỳ công cụ thiết lập Python nào mà bạn phải cài đặt tệp zipfile.
- Thực hiện bất kỳ nội dung nào sau khi cài đặt mà bạn muốn.
- Xóa tệp zip.
Để cài đặt chương trình, hãy chạy tập lệnh shell. Trên UNIX, tập lệnh này sẽ được chạy dưới dạng root. Tuy nhiên, không biết OS X xử lý điều đó như thế nào. Dưới đây là một ví dụ (tệp zip kèm theo chứa hai tệp chỉ có nhiễu ngẫu nhiên);
#!/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][email protected]+/H%Q"'2J'
M,;$7:C9E+WC]%M(BAUFN]4D\$%F63!^CA8O>'0C(-!YD?$\GQ[;M:[email protected]>=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#[email protected]'^10B:8.2$$9Q*@
MY:L4MK'^TVF)A5)9\%"/[email protected];]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)][email protected]
[email protected]`!&`\-CP["]B'FC&K7Z)T6K_&W1K5?M&K8D&^'C^J;H[Q4/ST
M(>QL].68#X)[email protected]`?9<R3#:4Y#A'X-<NT9C\OM3:4[<)`)[email protected]=*/[email protected]]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;[email protected]+]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#[email protected]%J/32)NAMI48M",_)0#JRR!*Y2P:[email protected])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\[email protected][@4L9MB.`1Z!`%@K5G)P<]0!?P\$RFUC/S:Y_Y\0*:\+$U+JEM%"
M9E!+`0(>`PH``````(<!K$`````````````````$`[email protected]`````````$`#M00``
M``!F;V\O550%``.^CJU/[email protected]+``$$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`[email protected]\@`"`````@``
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
Nguồn
2012-05-11 22:33:04
Chính xác yêu cầu của bạn là gì? Bạn chỉ muốn một tập tin có thể được nhấn đúp để khởi chạy trình cài đặt, hoặc nó sẽ là đủ để phân phối một gói có thể được cài đặt với lệnh một dòng mà người dùng có thể sao chép + dán không? Hoặc bạn có muốn phân phối gói của mình bên trong tệp .dmg để gọi trình cài đặt GUI tốt không? –
Nó sẽ dễ dàng cài đặt một ubuntu .deb hoặc một cửa sổ .exe. Chúng tôi cũng có phụ thuộc (Setuptools), chúng tôi muốn kiểm tra và tự động cài đặt nếu chúng không có mặt. Cài đặt phụ thuộc được thực hiện trong .deb thông qua danh sách phụ thuộc rõ ràng và trong cửa sổ .exe bằng cách chỉ định tập lệnh cài đặt sẵn cho bdist_wininst. Chúng tôi cũng muốn có một kịch bản sau khi cài đặt, trong số những thứ khác thông báo cho người dùng về cài đặt thành công/thất bại/các bước tiếp theo. – UsAaR33