2015-04-08 2 views
2

Несколько дней назад я смог без проблем создать исполняемый файл Windows моего пакета с помощью py2exe. Сегодня я попробовал снова после завершения удаления и dist/ папок, и я не вижу никаких ошибок, но я также не получаю исполняемый файл в моей папке dist/. Я получаю эти файлы в dist/:Почему нет py2exe для создания исполняемого файла?

  • _hashlib.pyd
  • bz2.pyd
  • library.zip
  • python27.dll
  • select.pyd
  • unicodedata.pyd

Вот мой setup.py файл:

from setuptools import setup 
import py2exe 

setup (
    name = "RabbitToRaven", 
    version = "0.1", 
    description="RabbitToRaven is a utility for copying RabbitMQ messages into a RavenDB database.", 
    author="Greg Major", 
    author_email="", # Removed to limit spam harvesting. 
    url="http://www.gregmajor.com/", 
    packages=['RabbitToRaven'], 
    entry_points = { 
     'console_scripts': ['RabbitToRaven = RabbitToRaven.__main__:main'] 
    }, 
    download_url = "http://www.gregmajor.com/", 
    zip_safe = True 
) 

Если я бегу $ python setup.py build с export DISTUTILS_DEBUG=1 тогда я получаю это:

options (after parsing config files): 
options (after parsing command line): 
option dict for 'aliases' command: 
    {} 
option dict for 'build' command: 
    {'verbose': ('command line', 1)} 
running build 
Distribution.get_command_obj(): creating 'build' command object 
    setting options for 'build' command: 
    verbose = 1 (from command line) 
running build_py 
Distribution.get_command_obj(): creating 'build_py' command object 
creating build 
creating build\lib 
creating build\lib\RabbitToRaven 
copying RabbitToRaven\__init__.py -> build\lib\RabbitToRaven 
copying RabbitToRaven\__main__.py -> build\lib\RabbitToRaven 

Вот мой python setup.py py2exe выход:

options (after parsing config files): 
options (after parsing command line): 
option dict for 'aliases' command: 
    {} 
option dict for 'py2exe' command: 
    {} 
running py2exe 
Distribution.get_command_obj(): creating 'py2exe' command object 
Distribution.get_command_obj(): creating 'bdist' command object 
Distribution.get_command_obj(): creating 'build' command object 
    setting options for 'build' command: 
running build_py 
Distribution.get_command_obj(): creating 'build_py' command object 
creating build 
creating build\lib 
creating build\lib\RabbitToRaven 
copying RabbitToRaven\__init__.py -> build\lib\RabbitToRaven 
copying RabbitToRaven\__main__.py -> build\lib\RabbitToRaven 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\build\bdist.win-amd64 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\build\bdist.win-amd64\winexe 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\build\bdist.win-amd64\winexe\collect-2.7 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\build\bdist.win-amd64\winexe\bundle-2.7 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\build\bdist.win-amd64\winexe\temp 
creating c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
*** searching for required modules *** 
*** parsing results *** 
creating python loader for extension 'unicodedata' (C:\tools\python2\DLLs\unicodedata.pyd -> unicodedata.pyd) 
creating python loader for extension 'select' (C:\tools\python2\DLLs\select.pyd -> select.pyd) 
creating python loader for extension '_hashlib' (C:\tools\python2\DLLs\_hashlib.pyd -> _hashlib.pyd) 
creating python loader for extension 'bz2' (C:\tools\python2\DLLs\bz2.pyd -> bz2.pyd) 
*** finding dlls needed *** 
*** create binaries *** 
*** byte compile python files *** 
byte-compiling C:\tools\python2\Lib\StringIO.py to StringIO.pyc 

snip!!! 

byte-compiling c:\Users\Greg\Code\LeadPipe.RabbitToRaven\lib\warnings.py to warnings.pyc 
*** copy extensions *** 
copying C:\tools\python2\DLLs\_hashlib.pyd -> c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
copying C:\tools\python2\DLLs\bz2.pyd -> c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
copying C:\tools\python2\DLLs\select.pyd -> c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
copying C:\tools\python2\DLLs\unicodedata.pyd -> c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
*** copy dlls *** 
copying C:\Windows\system32\python27.dll -> c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist 
setting sys.winver for 'c:\Users\Greg\Code\LeadPipe.RabbitToRaven\dist\python27.dll' to 'RabbitToRaven' 

*** binary dependencies *** 
Your executable(s) also depend on these dlls which are not included, 
you may or may not need to distribute them. 

Make sure you have the license if you distribute any of them, and 
make sure you don't distribute files belonging to the operating system. 

    USER32.dll - C:\Windows\system32\USER32.dll 
    SHELL32.dll - C:\Windows\system32\SHELL32.dll 
    ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll 
    WS2_32.dll - C:\Windows\system32\WS2_32.dll 
    GDI32.dll - C:\Windows\system32\GDI32.dll 
    KERNEL32.dll - C:\Windows\system32\KERNEL32.dll 

Кто-нибудь есть идеи? Я довольно новичок в py2exe, поэтому я уверен, что это, наверное, просто глупый контроль. Для чего это стоит, моя виртуальная среда активирована, и я строю из терминала Bash для Git (хотя cmd.exe тоже не работает).

ответ

0

Вы не указали, какой файл должен быть внесен в исполняемый файл. Или, по крайней мере, не так, как понимает py2exe. entry_points и console_scripts кажутся вариантами, уникальными для setuptools.

Добавить либо

console=['name_of_script.py'] 

или

windows=['name_of_script.py'] 

в качестве параметра для вашей setup() функции внутри setup.py файла. В зависимости от того, создается ли консольное приложение или приложение GUI. Они должны быть списками, даже если вы указываете только один скрипт python, хотя вы можете добавить больше, если хотите.

Предполагая, что вы создаете консольное приложение, ваша функция установки должна выглядеть примерно так.

setup (
    name = "RabbitToRaven", 
    version = "0.1", 
    console = ['name_of_script.py'], 
    ...) 

См http://www.py2exe.org/index.cgi/ListOfOptions для всех вариантов py2exe.