严谨性并不能保证
一、安装所需的软件(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 # 用来正常显示负号