2

我正在分发一个简单的库/应用程序,其中包含一个带有 GUI 的脚本。在 Windows 下,我希望它由 pythonw.exe 运行,最好将其设为.pyw文件。

root/
    lib/
        lib.py

    guiscript.py
    setup.py

我希望用户能够安装guiscript在任何路径中。

我从这个问题中偷了这个钩子:

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

class my_install(install):
    def run(self):
        install.run(self)
        try:
            if (sys.platform == "win32") and sys.argv[1] != "-remove":
                os.rename("guiscript.py",
                          "guiscript.pyw")
        except IndexError:pass

setup(...
      cmdclass={"install": my_install})

但这不起作用,因为它更改了源文件夹中 guiscript.py 的名称,因为路径是相对于 setup.py 的。

有没有一种合理的方法来获取脚本安装路径,或者是一种简单的方法来找到 guiscript.py(它不是在 PYTHONPATH 中)。


所以因为我没有 50 业力,我无法在 7 小时内回复我自己的帖子,但这里是:

好的,我找到了解决方案。如果你愿意,我可以删除这个问题,但现在我会保留它,以防其他人有同样的问题。

from distutils.core import setup
from distutils.command.install_scripts import install_scripts
import os, sys

class my_install(install_scripts):
    """Change main script to .pyw after installation.

    If sys.argv == '-remove'; it's ran as uninstall-script.
    Override run() and then call parent."""
    def run(self):
        install_scripts.run(self)
        try:
            if (sys.platform == "win32") and sys.argv[1] != "-remove":
                for script in self.get_outputs():
                    if script.endswith("guiscript.py"):
                        os.rename(script, script+"w")
        except IndexError:pass

setup(...
      cmdclass={"install_scripts": my_install}
     )
4

0 回答 0