我完成了我的Kivy应用程序的开发,现在我想打包它在Mac OS X上运行 . 我正在关注Kivy文档中的these instructions . 不幸的是我遇到了一些麻烦:
Environment
-
Mac OS X 10.10.5
-
Kivy 1.9.1 @ /Applications/kivy.app(Kivy的Python3版本)
-
Python 3.5.1通过Homebrew
Install Buildozer
sudo pip3.5 install buildozer
Build Kivy App for Mac OS X
cd /my/app
buildozer init
buildozer osx debug
Results
# Check configuration tokens
# Ensure build layout
# Create directory .buildozer
# Create directory bin
# Create directory /my/app/.buildozer/applibs
# Create directory .buildozer/osx/platform
# Create directory .buildozer/osx/app
# Check configuration tokens
# Preparing build
# Check requirements for osx
# Check if kivy-sdk-packager exists
# kivy-sdk-packager does not exist, clone it
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 127 0 127 0 0 200 0 --:--:-- --:--:-- --:--:-- 200
100 191k 0 191k 0 0 187k 0 --:--:-- 0:00:01 --:--:-- 1019k
Archive: master.zip
c013d00bbaca6ff8ef6c806d0f1d148c9c0c1b39
creating: kivy-sdk-packager-master/
inflating: kivy-sdk-packager-master/.gitignore
inflating: kivy-sdk-packager-master/LICENSE
inflating: kivy-sdk-packager-master/README.md
extracting: kivy-sdk-packager-master/__init__.py
inflating: kivy-sdk-packager-master/appveyor.yml
creating: kivy-sdk-packager-master/linux/
creating: kivy-sdk-packager-master/linux/debian/
inflating: kivy-sdk-packager-master/linux/debian/README.md
creating: kivy-sdk-packager-master/linux/debian/daily/
inflating: kivy-sdk-packager-master/linux/debian/daily/changelog
extracting: kivy-sdk-packager-master/linux/debian/daily/compat
inflating: kivy-sdk-packager-master/linux/debian/daily/control
inflating: kivy-sdk-packager-master/linux/debian/daily/copyright
extracting: kivy-sdk-packager-master/linux/debian/daily/kivy-doc.docs
extracting: kivy-sdk-packager-master/linux/debian/daily/kivy-examples.install
inflating: kivy-sdk-packager-master/linux/debian/daily/kivy-tools.install
inflating: kivy-sdk-packager-master/linux/debian/daily/python-kivy-bin.install
extracting: kivy-sdk-packager-master/linux/debian/daily/python-kivy-common.install
inflating: kivy-sdk-packager-master/linux/debian/daily/python-kivy.install
inflating: kivy-sdk-packager-master/linux/debian/daily/python3-kivy-bin.install
extracting: kivy-sdk-packager-master/linux/debian/daily/python3-kivy-common.install
inflating: kivy-sdk-packager-master/linux/debian/daily/python3-kivy.install
inflating: kivy-sdk-packager-master/linux/debian/daily/rules
creating: kivy-sdk-packager-master/linux/debian/stable/
inflating: kivy-sdk-packager-master/linux/debian/stable/changelog
extracting: kivy-sdk-packager-master/linux/debian/stable/compat
inflating: kivy-sdk-packager-master/linux/debian/stable/control
inflating: kivy-sdk-packager-master/linux/debian/stable/copyright
extracting: kivy-sdk-packager-master/linux/debian/stable/kivy-doc.docs
extracting: kivy-sdk-packager-master/linux/debian/stable/kivy-examples.install
inflating: kivy-sdk-packager-master/linux/debian/stable/kivy-tools.install
inflating: kivy-sdk-packager-master/linux/debian/stable/python-kivy-bin.install
extracting: kivy-sdk-packager-master/linux/debian/stable/python-kivy-common.install
inflating: kivy-sdk-packager-master/linux/debian/stable/python-kivy.install
inflating: kivy-sdk-packager-master/linux/debian/stable/python3-kivy-bin.install
extracting: kivy-sdk-packager-master/linux/debian/stable/python3-kivy-common.install
inflating: kivy-sdk-packager-master/linux/debian/stable/python3-kivy.install
inflating: kivy-sdk-packager-master/linux/debian/stable/rules
creating: kivy-sdk-packager-master/osx/
inflating: kivy-sdk-packager-master/osx/README.md
inflating: kivy-sdk-packager-master/osx/cleanup_app.sh
inflating: kivy-sdk-packager-master/osx/create-osx-bundle.sh
inflating: kivy-sdk-packager-master/osx/create-osx-dmg.sh
creating: kivy-sdk-packager-master/osx/data/
inflating: kivy-sdk-packager-master/osx/data/MakeSymlinks
inflating: kivy-sdk-packager-master/osx/data/background.png
inflating: kivy-sdk-packager-master/osx/data/icon.icns
inflating: kivy-sdk-packager-master/osx/data/link_duplicate.py
inflating: kivy-sdk-packager-master/osx/data/script
inflating: kivy-sdk-packager-master/osx/package_app.py
creating: kivy-sdk-packager-master/win/
extracting: kivy-sdk-packager-master/win/__init__.py
inflating: kivy-sdk-packager-master/win/common.py
creating: kivy-sdk-packager-master/win/data/
inflating: kivy-sdk-packager-master/win/data/README.txt
inflating: kivy-sdk-packager-master/win/data/kivy-bash.bat
inflating: kivy-sdk-packager-master/win/data/kivy.bat
inflating: kivy-sdk-packager-master/win/data/kivybash.rc
inflating: kivy-sdk-packager-master/win/data/kivyenv.sh
inflating: kivy-sdk-packager-master/win/data/kivywineenv.sh
creating: kivy-sdk-packager-master/win/data/tools/
inflating: kivy-sdk-packager-master/win/data/tools/cython.bat
extracting: kivy-sdk-packager-master/win/data/tools/easy_install.bat
inflating: kivy-sdk-packager-master/win/data/tools/link_msysgit.bat
inflating: kivy-sdk-packager-master/win/data/tools/make-portable-python.py
extracting: kivy-sdk-packager-master/win/data/tools/pip.bat
inflating: kivy-sdk-packager-master/win/data/tools/register-python.py
inflating: kivy-sdk-packager-master/win/dropbox.py
inflating: kivy-sdk-packager-master/win/gdrive.py
inflating: kivy-sdk-packager-master/win/glew.py
inflating: kivy-sdk-packager-master/win/gstreamer.py
inflating: kivy-sdk-packager-master/win/kivy_win_sdk.py
inflating: kivy-sdk-packager-master/win/readme
inflating: kivy-sdk-packager-master/win/sdl2.py
# check if Kivy.app exists in local dir
# Kivy.app found at /Applications/Kivy.app
# copying it to platform dir
# Install platform
# Check application requirements
# Remove directory and subdirectory /my/app/.buildozer/applibs
# Create directory /my/app/.buildozer/applibs
# Check garden requirements
# Compile platform
# Build the application #1
# Copy application source from /my/app
# Create directory /my/app/.buildozer/osx/app
# Copy /my/app/main.py
# Copy /my/app/minu.kv
# Package the application
# Building package
# Create minu.app
Traceback (most recent call last):
File "package_app.py", line 45, in <module>
from docopt import docopt
ImportError: No module named docopt
Traceback (most recent call last):
File "/usr/local/bin/buildozer", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/site-packages/buildozer/scripts/client.py", line 13, in main
Buildozer().run_command(sys.argv[1:])
File "/usr/local/lib/python3.5/site-packages/buildozer/__init__.py", line 987, in run_command
self.target.run_commands(args)
File "/usr/local/lib/python3.5/site-packages/buildozer/targets/osx.py", line 234, in run_commands
func(args)
File "/usr/local/lib/python3.5/site-packages/buildozer/targets/osx.py", line 250, in cmd_debug
self.buildozer.build()
File "/usr/local/lib/python3.5/site-packages/buildozer/__init__.py", line 198, in build
self.target.build_package()
File "/usr/local/lib/python3.5/site-packages/buildozer/targets/osx.py", line 155, in build_package
check_output(cmd, cwd=cwd)
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 629, in check_output
**kwargs).stdout
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 711, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['python', 'package_app.py', '/my/app/.buildozer/osx/app', '--appname=minu', '--bundlename=MinU', '--bundleid=org.test', '--bundleversion=0.1', '--displayname=MinU']' returned non-zero exit status 1
据我所知,我的Kivy应用程序不需要 docopt
所以我不确定为什么Buildozer会抱怨它 . 这个问题的解决方案是什么?
2 回答
你可以:
来自docopt import docopt
我找到了解决问题的方法 . 所以,
package_app.py
是用Python2编写的 . 因此,它需要在系统Python2中安装这些模块:现在Buildozer很开心,我也是 .
另外,为了减少我的应用程序的大小,我在包装前减掉了脂肪 . 具体来说,我从
myapp/.buildozer/osx/platform/kivy-sdk-packager-master/osx/Kivy.app/Contents/Frameworks
删除了gstreamer
. 这消除了~190 MB的脂肪 . 百胜:)