Почему «преследуемый яйцом» поиск __main__ - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь сделать исполняемый файл *.egg. Я могу создать это, используя следующий метод: я просто поместил __main__.py на верхний уровень .egg с именем .zip, и Python запустит этот __main__.py

Я читал, что есть более элегантный способ:

setup(
    # other arguments here...
    entry_points={
        'setuptools.installation': [
            'eggsecutable = my_package.some_module:main_func',
        ]
    }
)

https://setuptools.readthedocs.io/en/latest/setuptools.html#eggsecutable-scripts

Но если я создаю (с запуском setup.py bdist_egg) и запускаю *.egg, он печатает: C:\Python27\python.exe: can't find '__main__' module in <eggpath>

То есть питон не находит точку входа.

Можно ли сделать исполняемое яйцо без явного __main__.py?

Система:

  • Победа 7
  • Python 2.7.9
  • setuptools 39.0.1 из c: \ python27 \ lib \ site-packages (Python 2.7))

UPDATE

Я пробовал оба в Linux и с python3, и я получил ту же ошибку.

1 Ответ

0 голосов
/ 25 мая 2018

Кажется, что документация по точкам входа вводит в заблуждение, и они вам не нужны.

Что вы, вероятно, хотите примерно так:

setup.py:

import setuptools

setuptools.setup(
    name="example_pkg",
    version="0.0.1",
    # all the other parameters

    # function to call on $ python my.egg
    py_modules=['example_pkg.stuff:main']
)

example_pkg/stuff.py

def main():
    print("egg test")

if __name__ == '__main__':
    main()

создать яйцо: setup.py bdist_egg

запустить яйцо: python dist\example_pkg-0.0.1-py3.6.egg

вывод: egg test

источник решения: https://mail.python.org/pipermail/distutils-sig/2015-June/026524.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...