首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入错误的py2exe

导入错误的py2exe
EN

Stack Overflow用户
提问于 2015-07-02 10:24:56
回答 1查看 99关注 0票数 1

在具有导入程序的py文件中执行py2exe时,会导致错误。

如何避免此错误?

我准备了test.py和test_setup.py(用于py2exe),如下所示。

test.py是一个简单的程序,用于显示参数指定的data文件的数据。

  • 操作系统: Windows7 64位
  • python : 2.7
  • 合并案: 3.3
  • numpy : 1.9.2

on cmd.exe:

代码语言:javascript
复制
\python test_setup.py py2exe

=>成功

代码语言:javascript
复制
\python test.py test.fits
[[[574 574 579 ..., 579 585 581]
  [574 582 583 ..., 582 579 577]
  [581 583 578 ..., 572 580 580]
  ...,
  [584 585 580 ..., 584 582 579]
  [585 583 582 ..., 586 575 578]
  [584 580 583 ..., 585 585 589]]]

=>成功

代码语言:javascript
复制
\dist\test.exe test.fits
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    import pyfits
  File "pyfits\__init__.pyo", line 11, in <module>
  File "pyfits\core.pyo", line 42, in <module>
  File "pyfits\convenience.pyo", line 62, in <module>
  File "pyfits\hdu\__init__.pyo", line 2, in <module>
  File "pyfits\hdu\compressed.pyo", line 21, in <module>
  File "pyfits\hdu\table.pyo", line 646, in <module>
  File "pyfits\hdu\table.pyo", line 909, in BinTableHDU
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'str'

=>错误

test.py

代码语言:javascript
复制
# -*- coding: utf-8 -*-

import sys
import pyfits

def showfits(path):
    hdulist = pyfits.open(path)
    imgs = hdulist[0].data
    hdulist.close()
    print imgs

if __name__ == "__main__":
    showfits(sys.argv[1])

test_setup.py

代码语言:javascript
复制
# -*- coding: utf-8 -*- 

from distutils.core import setup
import py2exe

option = {
    "compressed"    :    1    ,
    "optimize"      :    2    ,
    "bundle_files"  :    3    
}

setup(
    options = {
        "py2exe"    :    option
    },

    console = [
        {
            "script"   :    "test.py"
        }
    ],
    zipfile = None
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 15:52:13

看着这条线撞上了

代码语言:javascript
复制
dump.__doc__ += _tdump_file_format.replace('\n', '\n        ')

看起来pyfits正在做一些类级的docstring操作。这可以合理地被认为是一个bug,因为不能总是假定一个方法的__doc__将是一个字符串,就像使用优化编译(就像您一样)的情况一样,它除其他外,删除了所有的docstring。

我认为最简单的解决办法要么是禁用优化(至少目前是这样),要么是修补程序来删除这一行并与之类似。

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

https://stackoverflow.com/questions/31182015

复制
相关文章

相似问题

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