为什么“eggsecutable”搜索__main__

时间:2018-04-27 12:15:22

标签: python executable setuptools egg

我尝试制作可执行文件*.egg。我可以使用以下方法创建它:我只是将__main__.py放在名为.egg的{​​{1}}的顶层,而python将运行.zip

我读过有一种更优雅的方式:

__main__.py

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

但是如果我创建(使用run setup( # other arguments here... entry_points={ 'setuptools.installation': [ 'eggsecutable = my_package.some_module:main_func', ] } ) )并运行setup.py bdist_egg,它会打印: *.egg

所以python找不到入口点。

是否可以制作一个没有明确C:\Python27\python.exe: can't find '__main__' module in <eggpath>的可执行蛋?

系统:

  • 赢7
  • Python 2.7.9
  • setuptools 39.0.1 from c:\ python27 \ lib \ site-packages(Python 2.7))

更新

我已经在使用python3的Linux上尝试过这两种错误。

1 个答案:

答案 0 :(得分:1)

入口点文档似乎具有误导性,您不需要它们。

你可能想要这样的东西:

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