gpt4 book ai didi

python - python setuptools 的所有安装后选项都损坏了吗?

转载 作者:太空狗 更新时间:2023-10-29 17:20:51 25 4
gpt4 key购买 nike

我正在尝试打包 PyQt 的构建(没有为我需要的配置提供安装程序),但我找不到任何可用的打包配置。不过,该问题并非特定于 PyQt。

问题:为了使模块工作,它需要 python 的 PREFIX 目录中的一个文件。我知道这可能是错误的形式,但在我的情况下,那里需要一个 qt.conf 文件,除了使该文件可用之外,我无能为力。我需要能够运行安装后脚本来创建包含已安装 PyQt 路径的文件。或者至少这看起来是最好的解决方案。

我查看的选项:

  • 我可以使用 python setup.py install 并覆盖 setuptools.command.install 类。但是,这在手动运行 setup.py 时有效,并且需要解压缩 bdist 并在包文件夹中有一个 cmd 提示符。它不适用于 bdist_wininst、bdist_msi 或 bdist_wheel,它们安装起来更方便(打包点)。这是可能的,但不是一个很好的解决方案。

  • bdist_wheel 似乎是个不错的选择,但它不会在安装后运行任何东西,只会将文件放在特定文件夹中,不包括 PREFIX。

  • bdist_wininst 支持安装后脚本(在创建包时通过 --install-script 开关),但不能很好地与 virtualenv 配合使用。有一个 stackoverflow建议运行 easy_install 或 wheel convert 的答案,但这些选项仅解压缩,它们不会运行安装脚本。否则您必须更改注册表,这不是可接受的解决方案。

我错过了什么?有可行的选择吗?

最佳答案

作为kynan explains , 要获得控制权,必须定义“类安装”以覆盖 run()。

编辑

引用他提供的代码:

import os, sys
from distutils.core import setup
from distutils.command.install import install as _install


def _post_install(dir):
from subprocess import call
call([sys.executable, 'scriptname.py'],
cwd=os.path.join(dir, 'packagename'))


class install(_install):
def run(self):
_install.run(self)
self.execute(_post_install, (self.install_lib,),
msg="Running post install task")


setup(
...
cmdclass={'install': install},
)

关于python - python setuptools 的所有安装后选项都损坏了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com