首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django到带有pyinstaller的桌面应用程序

Django到带有pyinstaller的桌面应用程序
EN

Stack Overflow用户
提问于 2013-08-28 17:36:40
回答 1查看 5.1K关注 0票数 2

我正在尝试将django项目转换为桌面应用程序。我下载了pyinstaller的开发版本: github/pyinstaller/pyinstaller。

hookutils.py被修改如下:http://www.pyinstaller.org/ticket/754,以便pyinstaller找到我的根目录: Django根目录c:\http://www.pyinstaller.org/ticket/754\mysite\mysite

我正在尝试编译的项目是运行后获得的初始项目: django-admin.py startproject mysite,因此还没有创建任何应用程序。

当按照pyinstaller (http://www.pyinstaller.org/wiki/Recipe/DjangoApplication)上描述的步骤运行服务器( .\dist\mysite\mysite.exe runserver :8080)时,会出现一些错误:

代码语言:javascript
复制
c:\Workspace\compiled>.\dist\mysite\mysite.exe runserver
Traceback (most recent call last):
  File "<string>", line 11, in <module>
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management", line 453, in execute_from_command_line
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management", line 392, in execute
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management", line 263, in fetch_command
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management", line 109, in get_commands
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.conf", line 53, in __getattr__
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.conf", line 49, in _setup
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.conf", line 71, in _configure_logging
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.utils.log", line 6, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.views.debug", line 11, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.http", line 1, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.http.cookie", line 5, in <module>
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.utils.six", line 84, in __get__
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.utils.six", line 103, in _resolve
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.utils.six", line 74, in _import_module
ImportError: No module named Cookie

如果然后在manage.py中导入Cookie,则会出现另一个错误:

代码语言:javascript
复制
Unhandled exception in thread started by <bound method Command.inner_run of <django.core.management.commands.runserver.Command object at 0x02D86CF0>>
Traceback (most recent call last):
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management.commands.runserver", line 92, in inner_run
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management.base", line 280, in validate
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.core.management.validation", line 35, in get_validation_errors
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.db.models.loading", line 166, in get_app_errors
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.db.models.loading", line 75, in _populate
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.db.models.loading", line 96, in load_app
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.utils.importlib", line 35, in import_module
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.contrib.auth.models", line 18, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.contrib.auth.hashers", line 8, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.test", line 6, in <module>
  File "C:\Workspace\pyinstaller-develop\PyInstaller\loader\pyi_importers.py", line 270, in load_module
exec(bytecode, module.__dict__)
  File "c:\Workspace\compiled\build\mysite\out00-PYZ.pyz\django.test.testcases", line 35, in <module>
ImportError: cannot import name _doctest

我试过进口doctest,但没有用。

使用python 2.7.4和django 1.5.1

编辑:,通过将django.test和HTMLParser添加到manage.py中,我让它工作起来:

代码语言:javascript
复制
import os
import sys
import Cookie

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "OTA.settings")

    from django.core.management import execute_from_command_line

    import django.test
    import HTMLParser
    execute_from_command_line(sys.argv)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-28 17:49:30

Django导入本地doctest模块。也许可以试试import django.test

还来自PyInstaller文档中关于包含其他模块的内容:

  • 您可以在PyInstaller命令行上提供其他文件。
  • 您可以在命令行上提供其他导入路径。
  • 您可以在第一次为脚本运行myscript.spec文件时编辑PyInstaller写入的该文件。在规范文件中,您可以告诉PyInstaller脚本特有的代码和数据文件。
  • 您可以编写“钩子”文件,通知PyInstaller隐藏导入。如果您为其他用户也可能使用的包“挂钩”导入,则可以将钩子文件贡献给PyInstaller。

如果py2exe不能满足您的需要,我也推荐使用PyInstaller。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18494620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档