在setup.py安装后调用模块中的函数

3 投票
1 回答
2315 浏览
提问于 2025-04-16 05:34

我有一个程序/笑话,需要一个比较大的数据结构来运行(一个字典,构建需要几秒钟),我想在运行 python setup.py install 时把它创建并保存到安装目录里。

distutils.core 中的 setup() 看起来不应该退出,所以我想在 setup() 之后直接导入我的模块并调用函数,但似乎不太奏效,尽管安装是 成功 的。

这是我现在的 setup.py 文件的样子:

from distutils.core import setup

setup(...
    )

from phoneoops import utils

utils.get_hashed_dictionary(save=True)

1 个回答

1

我创建了一个简单的 setup.py 文件,内容如下:

from distutils.core import setup
setup()
print 'after'

然后我运行 python setup.py install 后,打印语句正常输出。
我试了一个无效的命令,比如 python setup.py xx,结果打印语句没有被调用。

你确定没有抛出异常或者系统退出吗?

当我把这个简单的例子修改成:

try:
    setup()
except SystemExit as e:
    print e
print 'after'

然后运行 python setup.py xx,打印语句正常执行。

编辑:
同意,@AndiDog,这样更好(除非你有某种原因想要忽略异常):

try:
    setup()
finally:
    print 'after'

撰写回答