因为项目是给不懂Python或者不会安装Python环境的人用的,不可能给每个人都安装环境,所以选择用Pyinstaller把django打包成exe文件,然后在电脑上直接运行的办法。
调试环境:Windows10,Python3.5,django1.11.5,pyinstaller3.3.
以下是遇到的各种问题,凭记忆写的,可能不是很详细:
tips:每次打包完成之后如果还是和之前一样的错误,建议先删除掉build和dist文件夹(如果删除失败很可能是你命令行在那个文件夹里面,因为你刚刚运行了manage.exe),然后再用 pyinstaller manage.py 打包,否则有时候你改了一些其他的文件,但是他不会识别到(因为manage.py文件并没有发生变化),而是使用之前的文件直接生成,所以会产生和之前同样的错误。
我开始时候的目录结构:
/web_manage
/image # (存放用户上传目录文件,本应叫media,但是没来得及改)
/opeartion # (唯一的一个app,名字就是operation)
/static # (存放js,css,image等静态文件目录)
/templates # (模板文件目录)
/utils # (存放一些额外的自己写的函数之类的文件目录)
/web_manage (存放settings文件目录)
settings.py
urls.py
wsgi.py
db.sqlite3 # (数据库文件)
manage.py # (这就不说了吧)
1.ImportError:web_manage.settings is not a module (也许是package?)。
web_manage是我的project的名字,但是也是settings父文件夹的名字(pycharm新建项目适合没有设置好的锅)。
综合之前的情况考虑,这个可能是我的文件夹重名了,所以无法找到settings文件。
所以解决方案:
改文件夹的名字,不能一样。因为settings父文件夹会有很多引用,所以不能乱改,就改 project 文件夹的name。然后担心还是有问题,所以在manage.py文件里面import sys 之后加了两行代码:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
NEW_DIR = os.path.join(BASE_DIR, 'web_manage')
这段代码的作用是,把和该py文件同目录下的web_manage文件夹加到Python的搜索路径下去。
再次pyinstaller,就不是这个错误了,下一个。
2.ImportError: no module named django.contrib.admin.apps
这个问题很重要,因为是大部分阻挡我前进的原因。和这个一起遇到的还有