2017-02-02 3 views
0

Все примеры cx_Freeze предназначены для одного файла (модуля). Мне нужно сделать исполняемый файл для всего пакета python. Почему это трудно сделать?cx_Freeze с пакетами python (не только один модуль)

Вот мой каталог:

test1/ 
    __init__ 
    __main__ 

Как я запускаю это из командной строки с помощью следующей ЦМД

python -m test1 

__init__ пуст и __main__ просто простой print заявление. Я использую Python 3.5.1, но я могу переключиться на Python 3.4, если это будет решить проблему

Вот мой setup.py для Win64

from cx_Freeze import setup, Executable 
import sys 

build_exe_options = {"packages": ['test1'], 
        "include_files": [] 
        } 
executables = [ 
       Executable("__main__") 
       ] 
setup(
    name = "Foo", 
    version = "0.1", 
    description = "Help please!", 
    author = "me", 
    options = {"build_exe": build_exe_options}, 
    executables = executables 
) 

Update: 1 см комментарий ниже для приготовления раствора для этот подход 2- перехода к pyinstaller, потому что он может произвести один исполняемый файл не папку

ответ

1

замораживания целого пакета Безразлично»т иметь смысл, так как создать исполняемый файл вы хотите сценарий Python, который может быть запущен автономного из командной строки. Обычно пакет не запускается из коробки, а импортируется другим модулем.

Однако вы всегда можете импортировать пакет в свой скрипт, чтобы при его замораживании пакет включался в ваш дистрибутив.

Так что-то вроде этого:

test1/ 
    __init__ 
    __main__ 
run_test.py 

run_test.py импортирует test1 и запускает вашу функцию, которая делает все, что вы хотите.

import test1 
run_the_whole_thing() 

Примечание: Вам нужно будет изменить свой исполняемый файл в setup.py к run_test.py.

+0

Это на самом деле то, что я сделал. Спасибо за вашу помощь! – yagman

Смежные вопросы