Python 带看门狗的py2app
我正在尝试使用py2app捆绑一个小型Python应用程序,这个应用程序是我在Mac上用Python2.7制作的。我的应用程序使用导入到我的主文件顶部的: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
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生成的mysetup.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生成的默认文件--我根本没有修改它。我已经在问题中添加了文本。