单个msi,exe或egg中的多个python包

时间:2015-01-11 02:45:24

标签: python packaging

有没有办法使用Python setup.py和bdist_wininst或bdist_msi组合多个包?

我需要开发的软件包(包 foo ,需要软件包 bar )。大多数用户只是将其视为 foo ,因此我想创建一个包含" foo"的单个Windows MSI或可执行文件。 &" bar"。

我可以办理结帐,以便我在foo的setup.py中为foo和bar复制必要的安装要求,如果 bar 添加,这很容易出错任何新文件或目录。

建议?

2 个答案:

答案 0 :(得分:1)

如果您在setuptools的setup()函数中指定多个包,则安装多个包很简单:

from setuptools import setup
setup(
    ...
    packages = ['package1', 'package2'],
    package_dir = {'':'src'},   # tell distutils packages are under src
    ...
)

Link to the setuptools documentation

答案 1 :(得分:0)

我假设你已经安装了cx_Freeze;

from cx_Freeze import setup,Executable
setup(name="Game",
         version="1.0",
         options={"build_exe":{"packages":["pygame"],"include_files":["apple.png","snakehead.png","intro.wav","dead.wav"]}},
         description="the game",
         executables=[Executable("mygame.py")])

将此setup.py与所有软件包和main.py放在一个文件夹中,打开控制台 该文件夹并写入;

python setup.py bdist_msi

编辑:这是我制作的游戏的示例,因此除非您不使用Pygame,否则不要使用pygame。如你所见,我必须输入2个png和2个wav文件,include_files用于包。

enter image description here

它们必须在同一个文件夹中看起来像这样,打开 此文件夹并运行bdist_msi后,msi将在{{{} 1}}。这个截图来自我的文件夹,我将msi移动到这个文件,它不是在那里创建的。除msi和zip文件之外的所有其他内容必须位于同一文件夹中。

对于exe ,setup.py必须是这样的;

C/program files

在同一文件夹中打开cmd;

from cx_Freeze import setup,Executable
setup(name="Chuck Norris",
         version="1.0",
         description="as above",
         executables=[Executable("myfile.py")])

但是,将它转换为exe后,它将生成另一个文件夹,您必须将所有包放入该文件夹。包括您的程序在内的字体,图片,声音等。使用python setup.py build 时,必须在setup.py运行后将它们存储在同一文件夹中。