在win10下将pytorch打包成exe

严谨性并不能保证

一、安装所需的软件(win10下)

Anaconda和pycharm略,

截止2018年2月,pytorch官网尚不支持windows,在PyTorch在64位Windows下的Conda包处得到安装方式,本人安装的是pytorch-0.3.0-py36_0.3.0cu80.tar.bz2。

安装python打包程序cx_freeze

二、依据cx_freeze打包过程

建立setup.py

由于使用了numpy和matplotlib,会出现错误,改为如下格式

from cx_Freeze import setup, Executable

import os

base = None

os.environ[‘TCL_LIBRARY’] = r‘C:\Users\18840\Anaconda3\tcl\tcl8.6

os.environ[‘TK_LIBRARY’] = r’C:\Users\18840\Anaconda3\tcl\tk8.6

executables = [Executable(“main.py”, base=base)]

packages = [‘os’,’scipy’,’numpy.core._methods’, ‘numpy.lib.format’,\

‘matplotlib.backends.backend_tkagg’, ‘tkinter.filedialog’,’tkinter’] # idan

options = {

‘build_exe’: {

‘packages’: packages,

# ‘excludes’: [‘scipy.spatial.cKDTree’],

# ‘includes’: [‘scipy.spatial.ckdtree’],

},

}

setup(

name=”he”,

options=options,

version=”0.1″,

description=’123′,

executables=executables

)

在anaconda的终端下,cd到项目路径,python setup.py build即可。

三、出现错误及修改

错误1、Traceback (most recent call last):

File “test.py”, line 2, in <module>

import torch

File “C:\Anaconda3\lib\site-packages\torch\__init__.py”, line 41, in <module>

from torch._C import *

ImportError: DLL load failed: The specified module could not be found.

在生成的build\exe.win-amd64-3.6\lib\torch的文件夹下,修改Tensor.pyc为tensor.pyc,好像是cx_freeze不区别大小写。

错误2、ImportError: No module named ‘scipy.spatial.ckdtree’

同上,修改build\exe.win-amd64-3.6\lib\scipy\spatial文件夹下的ckdtree.cp36-win_amd64.pyd,改为小写。

错误3、No module named backend_tkagg无法使用matplotlib,

好像是matplotlib后端的问题,而且pycharm对此作了优化,没有深究,修改了后端,导致exe程序无法显示图片,但是可以保存,与后端有关。

import matplotlib

matplotlib.use(“Agg”)

import matplotlib.pyplot as plt

# plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 用来正常显示中文标签

# plt.rcParams[‘axes.unicode_minus’] = False # 用来正常显示负号

    原文作者:程都
    原文地址: https://zhuanlan.zhihu.com/p/33985986
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞