2016-04-21 45 views
0

我想构建一个使用cx_freeze绘制应用程序的exe。Cx_Freeze和Plotly

我以前使用matplotlib构建了应用程序,但已将绘图切换为绘图。

我可以构建应用程序,但是当我尝试绘图时,出现以下错误。

url = py.plot(fig, filename='pandas-box-plot') 

    File "C:\Python34\lib\site-packages\plotly\offline\offline.py", line 284, in p 
lot 
    get_plotlyjs(), 
    File "C:\Python34\lib\site-packages\plotly\offline\offline.py", line 48, in ge 
t_plotlyjs 
    plotlyjs = resource_string('plotly', path).decode('utf-8') 
    File "C:\Python34\lib\site-packages\pkg_resources\__init__.py", line 1184, in 
resource_string 
    self, resource_name 
    File "C:\Python34\lib\site-packages\pkg_resources\__init__.py", line 1457, in 
get_resource_string 
    return self._get(self._fn(self.module_path, resource_name)) 
    File "C:\Python34\lib\site-packages\pkg_resources\__init__.py", line 1535, in 
_get 
    return self.loader.get_data(path) 
OSError: [Errno 0] Error: 'plotly\\offline\\plotly.min.js' 

我都试过,包括在setup.py文件通过pkg_resources也已列入PATH_to_exe \脱机\ plotly.min.js的plotly.min.js。

据我可以告诉pkg_resources有问题吗?

编辑:好像pkg_resources正在寻找library.zip文件中的文件,但它包含在library.zip之外的路径中。我似乎无法找到一种方法将文件添加到setup.py中的library.zip文件

感谢您的帮助。

回答

0

好吧,我想通了。您可以将这些文件包含在setup.py中。首先创建要包含的文件列表,如在普通包含中。 python_dir是包含文件的python目录的路径。

zip_includes = [('%s\Lib\site-packages\plotly\offline\plotly.min.js' % str(python_dir), 'plotly\offline\plotly.min.js'), 
       ('%s\Lib\site-packages\plotly\widgets\graphWidget.js' % str(python_dir), 'plotly\widgets\graphWidget.js'), 
       ('%s\Lib\site-packages\plotly\graph_reference\default-schema.json' % str(python_dir), 'plotly\graph_reference\default-schema.json')] 

然后在您的设置:

setup(name="Orion", 
     version="1, 
     author="Jonathan", 
     description="Metering analysis tool", 
     options={'build_exe': {'excludes': excludes, 'packages': packages, 'include_files': include_files, 'build_exe': "%s/build" % BASE_PATH, 'zip_includes': zip_includes}}, 
     executables=[compileTarget] 
    ) 

这将包括library.zip里面的文件,并且将不包括他们像典型的外部文件包括。