我正在分发一个简单的库/应用程序,其中包含一个带有 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}
)