我正在尝试将安装后任务添加到 Python distutils,如如何使用简单的安装后脚本扩展 distutils?. 该任务应该在已安装的 lib 目录中执行 Python 脚本。此脚本生成已安装包所需的其他 Python 模块。
我的第一次尝试如下:
from distutils.core import setup
from distutils.command.install import install
class post_install(install):
def run(self):
install.run(self)
from subprocess import call
call(['python', 'scriptname.py'],
cwd=self.install_lib + 'packagename')
setup(
...
cmdclass={'install': post_install},
)
这种方法有效,但据我所知有两个缺陷:
- 如果用户使用的 Python 解释器不是来自 的解释器
PATH
,则安装后脚本将使用不同的解释器执行,这可能会导致问题。 - 对于空运行等是不安全的,我可以通过将其包装在一个函数中并使用
distutils.cmd.Command.execute
.
我该如何改进我的解决方案?有推荐的方法/最佳实践吗?如果可能的话,我想避免引入另一个依赖项。