[英]py2app ImportError with watchdog
我試圖使用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
起初我認為這與嵌套在watchdog
的observers
模塊有關,但為了測試,我添加了這一行
import watchdog
到我的程序的頂部,然后在運行應用程序時,得到了錯誤
ImportError: No module named watchdog
所以看起來它實際上找不到watchdog
包,出於某種原因。
我嘗試使用py2app的--packages
選項手動添加watchdog
包:
$ python setup.py py2app --packages watchdog
但它沒有效果。
我的非捆綁Python程序從命令行運行得很好; 我導入的其他下載模塊沒有錯誤; 我已成功捆綁了一個簡單的“Hello World!” 應用程序使用py2app,所以我相信我的設置是正確的。
但我對如何讓py2app找到watchdog
包有點想法。 任何想法或幫助將不勝感激。
編輯:這是我的setup.py
的文本,由py2applet生成。 我沒有修改它。
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'],
)
我已經安裝了看門狗0.5.4,這是一個非常老的版本,結果卻出現了同樣的錯誤。 將其升級到0.8.3后修復了錯誤:
pip install watchdog --upgrade
您的問題通常表明軟件包(在您的情況下是“看門狗”或其依賴項之一)未安裝,或者至少不在py2app期望查找軟件包的位置。
您是否使用相同的python命令運行py2app以及從命令行運行腳本? 你得到的ImportError的消息是什么(導入“看門狗”和導入“watchdog.observers”時?
py2app的(太長)輸出也應該提到它找不到一些包,哪些包。
正如其中一個答案所提到的,py2app似乎沒有搜索python解釋器使用的同一組路徑,因此您需要將python庫復制到其中一個位置。
例如,我安裝了MacPorts版本的Python,發現當我在/Library/Python/2.7/site-packages/中安裝了一個模塊時,py2app沒有找到它,但是當我將它復制到/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.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的命令行界面搜索所有site-packages
位置:
mdfind -name site-packages
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.