帮助解决带多个文件夹的Python setup.py问题

3 投票
2 回答
5866 浏览
提问于 2025-04-16 19:00

我正在尝试在OBS上构建我的程序。你能告诉我setup.py应该是什么样子,以便创建一个文件夹结构吗?比如说我有这样的结构:

../MyProgram
COPYING
README
mainscript.pyw
/applications
    /app1
        /icons
            pic1.png
        app1.py
    /app2
        /icons
            pic2.png
        /scripts
            script1.py
            script2.py
        app2.py

等等。

我看过Python的文档,也试过用'package_dir'和'packages',但是OBS还是给我报错,说找不到图标文件。我猜是setup脚本没有创建这些文件。而当我在本地尝试构建一个rpm时,也遇到了同样的错误。当我查看BUILD文件夹时,发现里面没有创建'applications'文件夹,也没有任何内容。

非常感谢你的帮助。请提供一个示例。谢谢。

2 个回答

0

我在这里找到了帮助:https://wiki.python.org/moin/Distutils/Tutorial

你需要创建一个叫做 Manifest.in 的文件,里面列出你想要包含的文件:

recursive-include applications/app1/icons *.png
recursive-include applications/app2/icons *.png
5

你可以在你的 MANIFEST.in 文件中添加以下这一行:

recursive-include applications *.png

这样可以包含所有的图标。

如果你想把你的 Python 文件打包,可以像这样明确声明你的包:

setup(
   packages=[
      "applications",
      "applications.app1",
      "applications.app2",
      "applications.app2.scripts",
   ],
   data_files=[    # declare the list of  data_files (destination directory, (data files))
      ("applications/app1/icons", ("applications/app1/icons/pic1.png",)),
      ("applications/app2/icons", ("applications/app2/icons/pic2.png",)),
   ]
   .... # your other setup options (name, version...)
)

不过你需要在每个目录下放一个 __init__.py 文件,这样 Python 才会把这些目录当作包来处理。

撰写回答