单个msi、exe或egg中包含多个python包

单个msi、exe或egg中包含多个python包,python,packaging,Python,Packaging,有没有办法将Python setup.py与bdist_wininst或bdist_msi一起使用来组合多个包 我必须开发包(需要包条的包foo)。大多数用户认为它是foo,所以我想创建一个包含“foo”和“bar”的windows MSI或可执行文件 我可以在foo的setup.py中为foo和bar复制必要的安装要求,如果bar添加任何新文件或目录,这很容易出错 建议?我想您已经安装了 将此setup.py与所有软件包和main.py一起放在一个文件夹中,打开该文件夹中的console并写入

有没有办法将Python setup.py与bdist_wininst或bdist_msi一起使用来组合多个包

我必须开发包(需要包条的包foo)。大多数用户认为它是foo,所以我想创建一个包含“foo”和“bar”的windows MSI或可执行文件

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


建议?

我想您已经安装了

将此
setup.py
与所有软件包和main.py一起放在一个文件夹中,打开该文件夹中的console并写入

python setup.py bdist_msi
编辑:这是我制作的一个游戏的示例,所以除非您没有使用pygame,否则您不会使用
pygame
。正如您所见,我必须放置2个png和2个wav文件,
include_文件
用于软件包

它们在同一文件夹中的外观必须与此相同,当您在该文件夹中打开cmd并运行该
bdist_msi
后,
msi
将出现在
C/程序文件中。这是我文件夹中的屏幕截图,我将msi移动到它没有创建的文件中。除msi和zip文件外的所有其他内容必须位于同一文件夹中

对于exesetup.py必须如下所示

from cx_Freeze import setup,Executable
setup(name="Chuck Norris",
         version="1.0",
         description="as above",
         executables=[Executable("myfile.py")])
在同一文件夹中打开cmd,然后单击

python setup.py build

但是,在您将其转换为exe后,它将创建另一个文件夹,您必须将所有软件包放入该文件夹。字体、图片、声音等,包括你的程序。使用
bdist_msi
运行setup.py后,您不必将它们存储在同一文件夹中。

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

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

谢谢,但这不是我想要的。我不想作为独立包部署。我想与lib站点包中的其他python包一起部署。但是,我希望单个MSI部署多个包这是针对多个包的单个MSI。正如你所看到的,我必须在游戏中加入2个图片和2个声音,用单个MSI完成。我想我的文字写得不好,但我正在寻找为通常是多个软件包创建一个软件包…我能找到的最接近的事情是:创建一个带有编译依赖项的安装包部分:啊,在这种情况下,在我的示例中,您可以将package1和package2放在名为main_package的目录中。然后在主程序包中添加一个空的
\uuuuu init\uuuuu.py
文件。然后,您将放置
packages=['main\u package']
,而不是
packages=['package1','package2']
from setuptools import setup
setup(
    ...
    packages = ['package1', 'package2'],
    package_dir = {'':'src'},   # tell distutils packages are under src
    ...
)