我为我的项目分叉BMDanalyse并修改了它。
由于内存要求,需要64位系统。请确保您拥有64bit Python 2.7。
以下设置说明适用于Windows或Ubuntu上的Pycharm,但您希望在Windows上运行它,因为我的问题是关于制作.exe:
需要以下包裹。不要忘记挑选64位的。在提供链接的情况下,您不能简单地通过Pycharm安装软件包。
打开BMDanalyse project后,您应该可以运行SPCanalyse.py
以启动应用。它有bug,是一个非常早期的原型。下载以下example data以确保其按预期工作。
如果您按顺序执行此操作,则以下内容应该有效。你当然可以检查你的IDE控制台上的应用程序正在做什么(还没有添加进度条)
aligned.raw
的文件应出现在“下载”文件夹中alignment.raw
图片。 ' alignment.raw'将出现在右侧列表中。单击alignment.raw。点击投资回报率,添加投资回报率 - >多边形。绘制两个多边形,如下图所示:
获得投资回报率后,点击分析 - >投资回报分析师。 ROI.raw
应出现在您的下载文件夹中。ROI.raw.
点击它。单击时间过滤器。一段时间dfoverf0_avg_framesIncl.raw
应出现在您的下载文件夹中dfoverf0_avg_framesIncl.raw.
点击它。屏幕应该变黑。如果它们仍在那里,请删除ROI。现在点击黑色场景中的随机位置。您所看到的是seed pixel correlation maps 如果所有这4个步骤都正常工作,那么应用程序就会按照预期在您的系统上运行。
然而,现在它正在工作我需要一个独立的.exe这个应用程序,没有任何依赖只是为了向我的主管显示它可以完成。
如果我在项目中的主脚本上使用python SPCanalyse.py
,则会弹出我的应用程序。
更新:我的笔记本电脑被盗了。然而,在一个干净的系统上设置所有东西时,我遇到了不同的问题。我能想到的唯一不同的主要因素是我不依赖于Continuum分析中的Anaconda来进行包管理。
如果我在主脚本上使用pyinstaller SPCanalyse.py
,我会得到一个.exe,如果我运行.exe,我首先注意到我的图标丢失了。其次,这种情况发生了:
当我按下对齐按钮时(即通过设置中的步骤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文件夹):
我不知道这个或setup.py
是否与运行.exe给我错误的原因有什么关系
答案 0 :(得分:0)
所以这个问题确实是由多处理引起的。但是,如果你google&#39; multiprocessing pyinstaller&#39;你可以找到this
事实证明
在multiprocessing.freeze_support()
之后添加if __name__=='__main__':
在您的主文件中(在我的情况下为SPCanalyse.py
)并在文件的开头添加import multiprocessing
。
我的程序现在作为独立的.exe运行,并满足所有四个列出的要求