Python 带看门狗的py2app

Python 带看门狗的py2app,python,python-2.7,python-import,py2app,watchdog,Python,Python 2.7,Python Import,Py2app,Watchdog,我正在尝试使用py2app捆绑一个小型Python应用程序,这个应用程序是我在Mac上用Python2.7制作的。我的应用程序使用导入到我的主文件顶部的: from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler 在运行我的程序时,这些import语句工作正常,程序工作正常。但是,在运行py2app后,启动捆绑应用程序会产生以下错误: ImportError: No mo

我正在尝试使用py2app捆绑一个小型Python应用程序,这个应用程序是我在Mac上用Python2.7制作的。我的应用程序使用导入到我的主文件顶部的:

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
在运行我的程序时,这些import语句工作正常,程序工作正常。但是,在运行py2app后,启动捆绑应用程序会产生以下错误:

ImportError: No module named watchdog.observers
起初我认为这与
observators
模块嵌套在
watchdog
中有关,但为了测试这一点,我添加了一行代码

import watchdog
到我的程序顶部,然后在运行应用程序时,得到错误

ImportError: No module named watchdog
因此,出于某种原因,它似乎实际上找不到
watchdog

我尝试使用py2app的
--packages
选项手动添加
watchdog
包:

$ python setup.py py2app --packages watchdog
但没有效果

我的非绑定Python程序在命令行中运行良好;我导入的其他下载模块没有错误;我已经成功地使用py2app捆绑了一个简单的“Hello World!”应用程序,所以我相信我的设置是正确的

但是我对于如何让py2app找到
watchdog
软件包有些不知所措。任何想法或帮助都将不胜感激

编辑:这是py2applet生成的my
setup.py
的文本。我没有修改它

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'],
)

尝试在setup.py文件中手动包含所需的包:

from setuptools import setup

APP = ['watcher.py']
DATA_FILES = []
PKGS = ['watchdog', /*whatever other packages you want to include*/]
OPTIONS = {
    'argv_emulation': True,
    'packages' : PKGS,
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

您的问题通常表明包(在您的情况下为“看门狗”或其依赖项之一)未安装,或者至少不在py2app希望找到包的位置

运行py2app是否使用与从命令行运行脚本相同的python命令?您收到的重要信息是什么(在导入“watchdog”和导入“watchdog.Observators”时)


py2app的输出(太长)还应该提到,它找不到一些包,以及哪些包。

正如其中一个答案中提到的,py2app似乎没有搜索python解释器使用的同一组路径,因此需要将python库复制到这些位置之一

例如,我安装了MacPorts版本的Python,发现当我在/Library/Python/2.7/site-packages/py2app中安装一个模块时没有找到它,但当我将它复制到/opt/local/Library/Frameworks/Python.framework/Versions/2.7/site-packages中时,它会找到它。因此要复制它,请执行以下操作:

sudo cp /Library/Python/2.7/site-packages/thatmodule.so /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
然后再次运行py2applet脚本并构建应用程序以进行检查。如果该应用程序位于其他位置,则可以使用Spotlight的命令行界面搜索所有
网站包
位置:

mdfind -name site-packages

我安装了watchdog 0.5.4,这是一个非常旧的版本,但出现了相同的错误。升级到0.8.3后,错误得到了修复:

pip install watchdog --upgrade

你的setup.py看起来像什么?我的setup.py只是py2applet生成的默认文件--我根本没有修改它。我已经在问题中添加了文本。