2016-04-21 44 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裏面的文件,並且將不包括他們像典型的外部文件包括。