setup.py中的自定义逻辑用于更改环境标头

时间:2016-11-07 20:00:17

标签: python anaconda setuptools

我有一个我在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可执行文件中的标头?有关如何处理此问题的任何想法吗?

0 个答案:

没有答案