在setup.py中调用函数(使用tox)

1 投票
1 回答
795 浏览
提问于 2025-04-18 15:07

我需要让我的 setup.py 文件调用另一个文件中的一个函数。我知道可以通过设置一个 cmdclass 来实现,比如:

import my_module

class Install(_install):
    def run(self):
        _install.run(self)
        my_module.do_stuff()

setup(name='foo',
        cmdclass={'install': Install},
        )

但是我在使用 tox,它似乎不允许从 setup.py 中导入(它只是说找不到模块)。为了让 tox 能正常运行,我可以直接在 tox.ini 文件中写这个:

commands = path_to_my_module.py

这样就可以正常运行了。

问题

我该如何让我的 setup.py 调用我的函数,而不让 tox 抱怨呢?

1 个回答

1

tox 是一个工具,它会创建一个虚拟环境,并把你的模块安装到这个环境里。因为你的依赖项(也就是你的模块需要用到的其他模块)是在 setup.py 文件中列出的,所以这些依赖项不会在 setup.py 被调用之前安装。也就是说,当 setup.py 第一次运行时,你的新虚拟环境里什么都没有安装。

你可以看看 tox.ini 文件中的 deps 配置选项,因为根据文档,这些包会在你要测试的模块之前安装。具体可以参考这个链接 https://testrun.org/tox/latest/config.html

撰写回答