有没有办法指定py2exe的构建目录?

10 投票
3 回答
9006 浏览
提问于 2025-04-16 16:33

我可以通过命令行设置最终的 dist 目录,用于 py2exe:

python setup.py py2exe -d "my/dist/dir"

但是我似乎无法设置用于临时 build 目录的文件。我简单看了一下源代码,但如果我没有遗漏什么的话,似乎没有办法做到这一点。

3 个回答

0

我遇到了和Casey一样的问题。我们有一个构建系统,我希望在用py2exe生成.exe文件时遵循这个系统。

不过,我觉得lambacck的回答不太对。'build_base'并不是py2exe的一个选项。

为了证明这一点,可以运行这个命令:

python setup.py --help py2exe

这个命令会列出py2exe的所有选项。结果里没有'build_base'这个选项。

我现在使用的是py2exe 0.6.9版本。

我可能错了,但听起来应该有人给维护这个项目的人发个补丁。这个项目在SourceForge上,最后一次更新是在2008年。

6

为了更清楚地说明lambacck的回答,这个方法在最新的原版py2exe上是有效的:

options = {'build': {'build_base': 'my/build/dir'},
           'py2exe': {
           'compressed':1,  
           'bundle_files': 2, 
           'dist_dir': "my/dist/dir"
           'dll_excludes': ['w9xpopen.exe']
          }}
10

你在命令行上可以设置的任何选项,都可以通过一个叫做 setup.cfg 的文件,或者在你的 setup.py 文件里来设置。

-d--dist-dir 的简写,你可以把它加到传给 setup 函数的选项字典中的 py2exe 字典里,写成 'dist_dir'

from distutils.core import setup
import py2exe

# equivalent command line with options is:
# python setup.py py2exe --compressed --bundle-files=2 --dist-dir="my/dist/dir" --dll-excludes="w9xpopen.exe"
options = {'py2exe': {
           'compressed':1,  
           'bundle_files': 2, 
           'dist_dir': "my/dist/dir"
           'dll_excludes': ['w9xpopen.exe']
           }}
setup(console=['myscript.py'], options=options)

你也可以把 setup.cfg 文件放在你的 setup.py 文件旁边:

[py2exe]
compressed=1
bundle_files=2 
dist_dir=my/dist/dir
dll_excludes=w9xpopen.exe

构建目录(--build-base)是构建命令的一个选项,所以你可以把它加到其中一个配置文件(或者 setup.py)里,写成:

[build]
build_base=my/build/dir

撰写回答