py2app を使用して、Mac 上の Python 2.7 で作成した小さな Python アプリをバンドルしようとしています。私のアプリでは、メイン ファイルの先頭にインポートされたWatchdog ライブラリを使用します。
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
私のプログラムを実行すると、これらの import ステートメントは正常に機能し、プログラムは期待どおりに機能します。ただし、py2app を実行した後、バンドルされたアプリケーションを起動すると、次のエラーが生成されます。
ImportError: No module named watchdog.observers
observers
最初は、モジュールがネストされていることと関係があると思いましたがwatchdog
、それをテストするために、次の行を追加しました
import watchdog
プログラムの先頭に移動し、アプリを実行するとエラーが発生しました
ImportError: No module named watchdog
watchdog
何らかの理由で、実際にはパッケージが見つからないようです。
watchdog
py2app の--packages
オプションを使用して手動でパッケージを追加しようとしました:
$ python setup.py py2app --packages watchdog
しかし、それは効果がありませんでした。
バンドルされていない Python プログラムは、コマンド ラインから問題なく動作します。私がインポートした他のダウンロードモジュールはエラーを出していません。そして、単純な「Hello World!」をバンドルすることに成功しました。アプリはpy2appを使用しているので、セットアップは正しいと思います。
しかし、py2appにwatchdog
パッケージを見つける方法については、ちょっとアイデアがありません。どんなアイデアや助けも大歓迎です。
編集: setup.py
py2applet によって生成された my のテキストは次のとおりです。私はそれを変更していません。
from setuptools import setup
APP = ['watcher.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)