我有一个我在PyPI上发布的Python包。我创建了一个名为run_program1
的脚本,它在命令行上启动GUI。
我的setup.py文件的片段:
setup(
name='my_package',
...
entry_points={
'gui_scripts': [
'run_program1 = program1:start_func',
]
}
)
不幸的是,当使用Anaconda Python安装时,run_program1可执行文件失败,出现如下错误:
This program needs access to the screen. Please run with a Framework build of python, and only when you are logged in on the main display of your Mac.
这个问题是Anaconda和setuptools之间的一个基本问题: https://groups.google.com/a/continuum.io/forum/#!topic/anaconda/9kQreoBIj3A
我正在尝试创建一个丑陋的黑客来改变pip创建的可执行文件中的环境 - run_program1 - 从#!/Users/***/anaconda2/bin/python
到#/usr/bin/env pythonw
。我可以在我的机器上安装后手动执行此操作,方法是打开~/anaconda2/bin/run_program1
并简单地替换第一行。通过该编辑,可执行文件按预期工作。但是,我需要创建一个hack,允许我为使用pip安装my_package的所有用户执行此操作。
我使用这种方法将自定义逻辑插入到我的setup.py文件中:https://blog.niteoweb.com/setuptools-run-custom-code-in-setup-py/
class CustomInstallCommand(install):
"""Customized setuptools install command - prints a friendly greeting."""
def run(self):
print "Hello, developer, how are you? :)"
install.run(self)
setup(
...
cmdclass={
'install': CustomInstallCommand,
}, ...)
我无法弄清楚的是,我应该在自定义类中添加什么来更改run_program1可执行文件中的标头?有关如何处理此问题的任何想法吗?