Pyqt4-pyqtgraph应用程序以递归方式打开自身的新实例

时间:2016-04-01 19:35:10

标签: python-2.7 pyqt4 executable pyinstaller pyqtgraph

我为我的项目分叉BMDanalyse并修改了它。

设置说明,以防您需要帮忙。实际问题是这样的。

由于内存要求,需要64位系统。请确保您拥有64bit Python 2.7

以下设置说明适用于Windows或Ubuntu上的Pycharm,但您希望在Windows上运行它,因为我的问题是关于制作.exe:

需要以下包裹。不要忘记挑选64位的。在提供链接的情况下,您不能简单地通过Pycharm安装软件包。

打开BMDanalyse project后,您应该可以运行SPCanalyse.py以启动应用。它有bug,是一个非常早期的原型。下载以下example data以确保其按预期工作。

如果您按顺序执行此操作,则以下内容应该有效。你当然可以检查你的IDE控制台上的应用程序正在做什么(还没有添加进度条)

  1. 点击文件,加载图片,加载两张图片。点击“对齐”'。在应用程序执行其操作后,名为aligned.raw的文件应出现在“下载”文件夹中
  2. 加载alignment.raw图片。 ' alignment.raw'将出现在右侧列表中。单击alignment.raw。点击投资回报率,添加投资回报率 - >多边形。绘制两个多边形,如下图所示: enter image description here 获得投资回报率后,点击分析 - >投资回报分析师。 ROI.raw应出现在您的下载文件夹中。
  3. 加载ROI.raw.点击它。单击时间过滤器。一段时间dfoverf0_avg_framesIncl.raw应出现在您的下载文件夹中
  4. 加载dfoverf0_avg_framesIncl.raw.点击它。屏幕应该变黑。如果它们仍在那里,请删除ROI。现在点击黑色场景中的随机位置。您所看到的是seed pixel correlation maps
  5. 如果所有这4个步骤都正常工作,那么应用程序就会按照预期在您的系统上运行。

    实际问题

    然而,现在它正在工作我需要一个独立的.exe这个应用程序,没有任何依赖只是为了向我的主管显示它可以完成。

    如果我在项目中的主脚本上使用python SPCanalyse.py,则会弹出我的应用程序。

    更新:我的笔记本电脑被盗了。然而,在一个干净的系统上设置所有东西时,我遇到了不同的问题。我能想到的唯一不同的主要因素是我不依赖于Continuum分析中的Anaconda来进行包管理。

    如果我在主脚本上使用pyinstaller SPCanalyse.py,我会得到一个.exe,如果我运行.exe,我首先注意到我的图标丢失了。其次,这种情况发生了:

    enter image description here

    当我按下对齐按钮时(即通过设置中的步骤1),应用程序冻结(即没有响应),然后重复打开自身的新的等级。我假设这是与内存有关的,因为这个操作确实需要大量的内存。如果我看一下应用程序占用了多少内存(仅查看原始内容"没有响应"实例),我每次看到它的平均值为1,180.8MB。考虑到所有其他正在运行的进程,尽管我仍然只使用了32%内存的28%。我已经尝试将应用程序的优先级设置为高到无效。我也尝试通过命令提示符打开,看看我是否收到任何有用的错误消息。可悲的是没有。

    请注意,步骤2-3按预期工作!单击黑色场景后,步骤4将产生相同的递归开放循环。

    我想我找到了这里发生的事情的解释: https://github.com/rdicosmo/parmap

      

    当然,如果您碰巧有开放频道,文件或其他   只应由父进程使用的连接   程序可能会以非常奇怪的方式运行:例如,不要打开一个   调用Parmap原语之前的图形窗口,不要使用它   库,如果你的程序是多线程的!

    因此,我非常确定我非常错误地使用parmap。如果我通过我的IDE运行我,我仍然困惑为什么我的应用程序有效!

    现在是我小偷的问题

    如果我在主脚本上使用pyinstaller SPCanalyse.py,当我尝试运行生成的.exe

    时会输出以下内容
    D:\Home\Downloads\BMDanalyse\BMDanalyse>D:\Home\Downloads\BMDanalyse\BMDanalyse\
    dist\SPCanalyse\SPCanalyse.exe
    Traceback (most recent call last):
      File "<string>", line 21, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "BMDanalyse\SPCExplorer\filter_jeff.py", line 9, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\image_registration\__init__.py", line 1, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\image_registration\cross_correlation_shifts.py", line 4, i
    n <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\image_registration\fft_tools\__init__.py", line 3, in <mod
    ule>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\image_registration\fft_tools\correlate2d.py", line 2, in <
    module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\image_registration\fft_tools\convolve_nd.py", line 329, in
     <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\pytest.py", line 21, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\_pytest\config.py", line 11, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\_pytest\_code\__init__.py", line 2, in <module>
      File "c:\users\cornelis\appdata\local\temp\pip-build-6xhsyv\pyinstaller\PyInst
    aller\loader\pyimod03_importers.py", line 389, in load_module
      File "site-packages\_pytest\_code\code.py", line 8, in <module>
      File "site-packages\py\_apipkg.py", line 125, in __makeattr
      File "site-packages\py\_apipkg.py", line 48, in importobj
    ImportError: No module named _builtin
    SPCanalyse returned -1
    

    起初我认为我的问题与No module named builtins有关,所以我更新了我的setup.py,以包含我可以找到的项目远程依赖的所有可能包:

    install_requires = [
        'pyinstaller'
        'future'
        'astropy',
        'image_registration',
        'scipy',
        'FITS_tools',
        'pywcs',
        'pyfits',
        'pytest',
        'parmap',
        'setuptools',
        'pyqtgraph',        
        'matplotlib',
        'numpy',
        'PIL',
        'SPCExplorer',
        ],
    

    我也试过了python setup.py build,我得到了:

    D:\Home\Downloads\BMDanalyse>python setup.py build
    running build
    running build_py
    creating build
    creating build\lib
    creating build\lib\BMDanalyse
    copying BMDanalyse\customItems.py -> build\lib\BMDanalyse
    copying BMDanalyse\matplotlib_fix.py -> build\lib\BMDanalyse
    copying BMDanalyse\ordereddict.py -> build\lib\BMDanalyse
    copying BMDanalyse\ROI.py -> build\lib\BMDanalyse
    copying BMDanalyse\SidePanel.py -> build\lib\BMDanalyse
    copying BMDanalyse\SPCanalyse.py -> build\lib\BMDanalyse
    copying BMDanalyse\version.py -> build\lib\BMDanalyse
    copying BMDanalyse\ViewBoxCustom.py -> build\lib\BMDanalyse
    copying BMDanalyse\__init__.py -> build\lib\BMDanalyse
    creating build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\arrow-down-2.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\arrow-left.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\arrow-right.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\arrow-up-2.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\filesave.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\file_add.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\file_copy.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\file_delete2.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\green-add3.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\logo.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\opened-folder.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\polygonIcon.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\README.txt -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\rectangularIcon.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\icons\red_delete.png -> build\lib\BMDanalyse\icons
    copying BMDanalyse\changeLog.txt -> build\lib\BMDanalyse
    creating build\lib\BMDanalyse\sampleMedicalImages
    creating build\lib\BMDanalyse\sampleMedicalImages\Implant
    creating build\lib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    copying BMDanalyse\sampleMedicalImages\Implant\XYplane\vxray_XY_1.png -> build\l
    ib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    copying BMDanalyse\sampleMedicalImages\Implant\XYplane\vxray_XY_11.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    copying BMDanalyse\sampleMedicalImages\Implant\XYplane\vxray_XY_21.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    copying BMDanalyse\sampleMedicalImages\Implant\XYplane\vxray_XY_31.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    copying BMDanalyse\sampleMedicalImages\Implant\XYplane\vxray_XY_6.png -> build\l
    ib\BMDanalyse\sampleMedicalImages\Implant\XYplane
    creating build\lib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    copying BMDanalyse\sampleMedicalImages\Implant\YZplane\vxray_YZ_1.png -> build\l
    ib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    copying BMDanalyse\sampleMedicalImages\Implant\YZplane\vxray_YZ_11.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    copying BMDanalyse\sampleMedicalImages\Implant\YZplane\vxray_YZ_21.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    copying BMDanalyse\sampleMedicalImages\Implant\YZplane\vxray_YZ_31.png -> build\
    lib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    copying BMDanalyse\sampleMedicalImages\Implant\YZplane\vxray_YZ_6.png -> build\l
    ib\BMDanalyse\sampleMedicalImages\Implant\YZplane
    creating build\lib\BMDanalyse\sampleMedicalImages\No implant
    creating build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    copying BMDanalyse\sampleMedicalImages\No implant\XYplane\noimplant_XY_1.png ->
    build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    copying BMDanalyse\sampleMedicalImages\No implant\XYplane\noimplant_XY_11.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    copying BMDanalyse\sampleMedicalImages\No implant\XYplane\noimplant_XY_21.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    copying BMDanalyse\sampleMedicalImages\No implant\XYplane\noimplant_XY_31.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    copying BMDanalyse\sampleMedicalImages\No implant\XYplane\noimplant_XY_6.png ->
    build\lib\BMDanalyse\sampleMedicalImages\No implant\XYplane
    creating build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    copying BMDanalyse\sampleMedicalImages\No implant\YZplane\noimplant_YZ_1.png ->
    build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    copying BMDanalyse\sampleMedicalImages\No implant\YZplane\noimplant_YZ_11.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    copying BMDanalyse\sampleMedicalImages\No implant\YZplane\noimplant_YZ_21.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    copying BMDanalyse\sampleMedicalImages\No implant\YZplane\noimplant_YZ_31.png ->
     build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    copying BMDanalyse\sampleMedicalImages\No implant\YZplane\noimplant_YZ_6.png ->
    build\lib\BMDanalyse\sampleMedicalImages\No implant\YZplane
    

    当我去所有这些&#34;建造&#34;我看到我的程序folder with scripts absolutely essential丢失了。也许这暗示了导致我错误的原因?查看运行build的内容的图像(即没有SPCExplorer文件夹):

    enter image description here

    我不知道这个或setup.py是否与运行.exe给我错误的原因有什么关系

1 个答案:

答案 0 :(得分:0)

所以这个问题确实是由多处理引起的。但是,如果你google&#39; multiprocessing pyinstaller&#39;你可以找到this

事实证明

multiprocessing.freeze_support()之后添加if __name__=='__main__': 在您的主文件中(在我的情况下为SPCanalyse.py)并在文件的开头添加import multiprocessing

我的程序现在作为独立的.exe运行,并满足所有四个列出的要求