首页 文章

Kivy Buildozer“ImportError:没有名为docopt的模块”

提问于
浏览
1

我完成了我的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 回答

  • 1

    你可以:

    • 删除该行

    来自docopt import docopt

    • 只需将docopt.py放在package_app.py旁边
  • 1

    我找到了解决问题的方法 . 所以, package_app.py 是用Python2编写的 . 因此,它需要在系统Python2中安装这些模块:

    pip2 install docopt sh
    

    现在Buildozer很开心,我也是 .

    另外,为了减少我的应用程序的大小,我在包装前减掉了脂肪 . 具体来说,我从 myapp/.buildozer/osx/platform/kivy-sdk-packager-master/osx/Kivy.app/Contents/Frameworks 删除了 gstreamer . 这消除了~190 MB的脂肪 . 百胜:)

相关问题