python-2.7 - 将整个文件夹复制到 setup.py 文件中

标签 python-2.7 pyqt4 py2exe

我有一个 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/

相关文章:

python - 使用 py2exe 隐藏 Python GUI 应用程序的控制台窗口

python - 是否可以让 QWebKit 显示 pdf 文件?

python - 如何使用 py2exe 将文本文件嵌入到单个可执行文件中

python - 使用 MySQLdb 从 Python 中获取 MySQL

python - 用 Python 代码编写的 SHA 512 crypt 输出与 mkpasswd 不同

python - 关于不同python版本的安装

python-2.7 - 将 tensorflow 模型保存到文件

python - 在 QGraphicsScene 中显示图像

python - py2exe 安装程序崩溃

python - Py2exe:在 library.zip 或 exe 文件本身中嵌入静态文件并在运行时透明地访问它们