我有一个 python 应用程序(主要使用 pyqt 完成)。我正在使用 py2exe 创建可执行文件,我的 setup.py 看起来像这样
from distutils.core import setup import py2exe import os
includes=["sqlite3","sip","PyQt4","PyQt4.QtGui","PyQt4.QtCore"]
excludes=[]
packages=[]
dll_excludes=['libgdk-win32-1.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 'tk84.dll']
setup(
options={"py2exe": {"compressed": 2,
"optimize": 2,
"includes": includes,
"excludes": excludes,
"packages": packages,
"dll_excludes": dll_excludes,
"bundle_files": 2,
"dist_dir": "dist",
"xref": False,
"skip_archive": False,
"ascii": False,
"custom_boot_script": '',
}
},
windows=['myapplication.py'],
data_files = [('', [r'c:\configuration.ini',
r'c:readme.txt'
])]
)
现在 data_files 条目允许我将一些文件复制到“dist”文件夹,但是我还想复制我的文档文件夹,文档文件夹包括一大堆文件,html、图像、pdf,大约 2MB文档存储在 my_app\docs 文件夹中。我不知道该怎么做。谁能建议怎么做?
最佳答案
作为 setup.py
的一部分,您将不得不使用自定义函数来执行此操作:
def copy_dir():
dir_path = 'YOUR_DIR_HERE'
base_dir = os.path.join('MODULE_DIR_HERE', dir_path)
for (dirpath, dirnames, files) in os.walk(base_dir):
for f in files:
yield os.path.join(dirpath.split('/', 1)[1], f)
然后我将其设置为我的package_data
:
package_data = {
'' : [f for f in copy_dir()]
},
请注意,如果您使用 data_files
,这也应该有效。确保将该函数作为列表理解的一部分进行调用 - 显然 setuptools 不能很好地处理类列表而不是直接列表。
关于python-2.7 - 将整个文件夹复制到 setup.py 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21123532/