• Kirill Smelkov's avatar
    bin: pyrunmain чтобы запустить модули в которых не сделано if __name__ == '__main__' · 9b00cc9c
    Kirill Smelkov authored
    Например в ZODB есть ZODB.FileStorage.fsdump который в ZODB/setup.py
    поставлен как
    
        entry_points = """
        [console_scripts]
        fsdump = ZODB.FileStorage.fsdump:main
        ...
    
    т.е. после сборки оно сгенерирует отдельный файл со следующим содержимым
    
        #!/usr/bin/python
        # EASY-INSTALL-ENTRY-SCRIPT: 'ZODB3==3.9.7','console_scripts','fsdump'
        __requires__ = 'ZODB3==3.9.7'
        import sys
        from pkg_resources import load_entry_point
    
        if __name__ == '__main__':
            sys.exit(
                load_entry_point('ZODB3==3.9.7', 'console_scripts', 'fsdump')()
            )
    
    т.е. программу можно будет запустить.
    
    Но это после сборки. А in-tree программу не запустить.
    
    Не уверен что добавление if __name__ == '__main__' примут в upstream
    из-за entrypoint'а. Мне зачастую удобно работать in-tree, поэтому
    добавляю простую утилиту для запуска таких программ.
    9b00cc9c
pyrunmain 299 Bytes