pyinstaller打包py文件的一些问题记录

  打包了一个django网站,折腾了一天才弄好,这里记录下遇到的一些问题及相应的解决办法(pyinstaller的安装及使用方法可自行百度 ):

打包环境:

     django==1.8

     win7 64位

      python==2.7.12

      pyinstaller==3.3.1

项目结构(简化):

  • pro
    • templates
    • views
    • utils
      • ssh.py
    • main.py
    • config.py

        这里只将main.py打包成exe(pyinstaller -F main.py)

问题记录:

1.程序打包好后报错:找不到config.py或者找不到views内的模块

   其实这是很多自己的程序由第三方程序(比如supervisor)调起来时会出现的问题,就是程序在运行的时候找不到项目的路径.需要在主程序最上层导入当前程序运行的路径:

import sys
import os

sys.path.append(os.getcwd())

2.修改配置文件config.py不生效

  主程序main.py在打包时,会把项目目录下的所有py,pyc,spec打包进去.所以就算我在打包时有意的把config.py移出了该项目目录,但是有个config.pyc在(py和pyc的区别可自行百度),被打包进去了,所以修改config.py不生效.解决办法很简单:把pyc和spec全部删掉后重新打包

3.程序可以运行,但是web页面没效果

    这是因为pyinstaller在打包的时候没把templates里面的模板和一些css,js文件打包进exe,.所以在使用exe的时候,还要把templates和exe放置在同一目录

4.各种no module name及报错的问题

  首先确保程序在服务器上跑是正常的,是打包之后出现的问题.这里出现了2个问题: ssh.py文件中是直接显示import paramiko 的,但是exe运行的时候,却提示'no module named paramiko'这个模块.这里我没有深究,直接在main.py 里面显示调用paramiko后解决

    之后运行的时候还有django报各种错,折腾后发现其实是django template模块里面的两个模块是隐式调用的,只在用到的时候调用,不是一开始就调用,最后在找到django template模块根目录,在__init__.py 里面显示调用这两个模块后解决.

 

你可能感兴趣的:(web)