【发布时间】:2017-05-21 07:15:09
【问题描述】:
我有一个创建词云的程序,我正在尝试使用 py2exe 将模块 wordcloud 包含到 .exe 中,但是我在 dist 文件夹中的 library.zip 文件中观察到 py2exe 收集所有 .pyd 和 . pyc 除了那些没有扩展文件的。 wordcloud模块的stopwords文件在某种意义上是不能被py2exe打包的,但它是执行WordCloud()的必要文件。
我的第一个方法是将停用词文件重命名为 .txt,我重新运行代码,它给了我一个 Errno2,它无法找到 stopwords.txt 文件。所以我把它恢复到原来的形式,没有扩展的那个。
我的第二种方法是在 py2exe setup.py 中将 soprword 文件包含到 my_datafile 中:
from distutils.core import setup
import py2exe,sys,os
import matplotlib
import wordcloud
import matplotlib.backends.backend_tkagg
sys.setrecursionlimit(5000)
Mydata_files =[('file', ['C:\\Python27\Lib\\site-packages\\wordcloud\\stopwords.*'])]
Mydata_files.extend(matplotlib.get_py2exe_datafiles())
setup(
console=['._ProbMod_.py'],
data_files = Mydata_files,
options={
'py2exe': {
'includes': ['sklearn.neighbors.typedefs','sklearn','sklearn.utils.sparsetools._graph_validation','sklearn.utils.validation','scipy.sparse.csgraph._validation','sklearn.utils.weight_vector','sklearn.utils.lgamma','FileDialog',
'scipy.special._ufuncs_cxx','scipy','matplotlib','pylab','FileDialog', 'scipy.integrate', 'scipy.special.*','scipy.linalg.*','matplotlib.backends.backend_tkagg']
}
}
)
结果一样,Errno 2,在library.zip文件中找不到停用词文件。
我的第三种方法是在 py2exe 的“包含”函数中包含 wordcloud 模块:
from distutils.core import setup
import py2exe,sys,os
import matplotlib
import wordcloud
import matplotlib.backends.backend_tkagg
sys.setrecursionlimit(5000)
setup(
console=['._ProbMod_.py'],
data_files = matplotlib.get_py2exe_datafiles(),
options={
'py2exe': {
'includes': ['sklearn.neighbors.typedefs','sklearn','sklearn.utils.sparsetools._graph_validation','sklearn.utils.validation','scipy.sparse.csgraph._validation','sklearn.utils.weight_vector','sklearn.utils.lgamma','FileDialog',
'scipy.special._ufuncs_cxx','scipy','matplotlib','pylab','FileDialog', 'scipy.integrate', 'scipy.special.*','scipy.linalg.*','matplotlib.backends.backend_tkagg','wordcloud']
}
}
)
仍然 Errno 2 仍然存在。
最后一种方法是手动将停用词复制到 library.zip 文件中的 wordcloud 文件夹中,不幸的是,它也不起作用。
有谁知道如何告诉 py2exe 将所有文件包含在站点包模块文件夹中,而不仅仅是打包 .pyc 和 .pyd?
【问题讨论】:
-
(C:\\Python27\Lib\\site-packages\\wordcloud\\stopwords.FILE不确定我理解。首先我看到在字符串的开头有一个(太多了。二是解释混乱。你说文件只叫file.,但字符串说它叫stopwords.FILE。是哪一个? -
您好,zorberg 非常感谢您的回复。我重新编辑了我的问题。
-
C:\\Python27\Lib\\site-packages\\wordcloud\\stopwords')现在你又搞砸了,但不同的是。 :D 无论如何,没有扩展名的文件通常由“文件名”寻址。末尾的点表示没有后缀。那么,我猜'C:\\Python27\Lib\\site-packages\\wordcloud\\stopwords.'可能会解决这个问题? -
我遇到了同样的错误,IOError: [Errno 2]
标签: python file py2exe pyinstaller word-cloud