我有一个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文件夹中的文档。我不知道该怎么做。任何人都可以提出建议吗?
答案 0 :(得分:0)
您将不得不使用自定义功能在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与list-alikes不同,而不是直接列表。