py2app で分割で作っている Python ファイルを扱う手段がわからない。
ならば合体スクリプトを作って単体にしてしまえばいいんでね?
目印に #begin, #end みたいなのを書いてその中間だけを取り出せば簡単そう。
ということで早速シェルスクリプトを書いてみた。
##!/bin/sh
ifs=$IFS
IFS=$'\n'
for filename in *.py; do
    while read -r line; do
        [[ $line =~ "#end" ]] && break
        [[ $begin = begin ]] && lines+="$line\n"
        [[ $line =~ "#begin" ]] && begin=begin
    done < $filename
    begin=""
done
echo -e $lines
IFS=$ifs
のですけど。。。
#!/usr/bin/env python3
#begin
class TestClass():
    def __init__(self):
        print('hello\nworld')
#end
TestClass()
こんなファイルで試すと。
class TestClass():
    def __init__(self):
        print('hello
world')
えぇ。。。
ソースコード中の \n まで改行とみなされてしまうのカヨ!
ちなみに -r 無しだと hellonworld になるのでもっと注意。
cat ならイケるかな。
##!/bin/sh
ifs=$IFS
IFS=$'\n'
for filename in *.py; do
    for line in `cat $filename`; do
        [[ $line =~ "#end" ]] && break
        [[ $begin = begin ]] && lines+="$line\n"
        [[ $line =~ "#begin" ]] && begin=begin
    done
    begin=""
done
echo -e $lines
IFS=$ifs
同じだ。。。
#!/usr/bin/env python3
import os
lines = []
begin = ''
for filename in [s for s in os.listdir() if s.endswith('.py')]:
    with open(filename) as f:
        for s in f.read().split('\n'):
            if '#end' in s: break;
            elif begin == 'begin': lines.append(s)
            elif '#begin' in s: begin = 'begin'
    begin = ''
print('\n'.join(lines))
python 等なら問題ない。
connect.py みたいなファイルを用意してシェルから呼ぶことにするか。
シェルってほんとに色々と困ったちゃん。