كيف يمكنني تجميع الملفات الأخرى عند استخدام cx_freeze؟

StackOverflow https://stackoverflow.com/questions/2553886

  •  23-09-2019
  •  | 
  •  

سؤال

أنا أستخدم Python 2.6 و CX_Freeze 4.1.2 على نظام Windows. لقد قمت بإنشاء setup.py لإنشاء بلدي القابل للتنفيذ وكل شيء يعمل بشكل جيد.

عندما يعمل CX_Freeze ، فإنه ينتقل كل شيء إلى build الدليل. لدي بعض الملفات الأخرى التي أود تضمينها في بلدي build الدليل. كيف يمكنني أن أفعل هذا؟ هذا هي هيكيتي:

src\
    setup.py
    janitor.py
    README.txt
    CHNAGELOG.txt
    helpers\
        uncompress\
            unRAR.exe
            unzip.exe

ها هو المقتطف الخاص بي:

نصب

( name='Janitor',
  version='1.0',
  description='Janitor',
  author='John Doe',
  author_email='john.doe@gmail.com',
  url='http://www.this-page-intentionally-left-blank.org/',
  data_files = 
      [ ('helpers\uncompress', ['helpers\uncompress\unzip.exe']),
        ('helpers\uncompress', ['helpers\uncompress\unRAR.exe']),
        ('', ['README.txt'])
      ],
  executables =
      [
      Executable\
          (
          'janitor.py', #initScript
          )
      ]
)

لا يبدو لي أن أحصل على هذا للعمل. هل أحتاج MANIFEST.in ملف؟

هل كانت مفيدة؟

المحلول

اكتشفه.

from cx_Freeze import setup,Executable

includefiles = ['README.txt', 'CHANGELOG.txt', 'helpers\uncompress\unRAR.exe', , 'helpers\uncompress\unzip.exe']
includes = []
excludes = ['Tkinter']
packages = ['do','khh']

setup(
    name = 'myapp',
    version = '0.1',
    description = 'A general enhancement utility',
    author = 'lenin',
    author_email = 'le...@null.com',
    options = {'build_exe': {'includes':includes,'excludes':excludes,'packages':packages,'include_files':includefiles}}, 
    executables = [Executable('janitor.py')]
)

ملحوظة:

  • include_files يجب أن تحتوي على المسارات النسبية "فقط" إلى setup.py نص آخر سوف يفشل البناء.
  • include_files يمكن أن تكون قائمة بالسلسلة ، أي مجموعة من الملفات مع مساراتها النسبية
    أو
  • include_files يمكن أن تكون قائمة من tuples حيث النصف الأول من tuple هو اسم الملف مع المسار المطلق والنصف الثاني هو اسم الملف الوجهة مع المسار المطلق.

(عندما ينشأ نقص الوثائق ، استشر Kermit The Frog)

نصائح أخرى

هناك مثال أكثر تعقيدًا على: CX_FREEZE - WXPYWIKI

إن توثيق جميع الخيارات في: cx_freeze (أرشيف الإنترنت)

مع cx_Freeze, ، ما زلت أحصل على إخراج بني 11 ملفًا في مجلد واحد ، على عكس مع ذلك Py2Exe.

البدائل: التغليف | الماوس مقابل. بيثون

من أجل العثور على ملفاتك المرفقة (include_files = [-> your attached files <-]) يجب عليك إدراج الوظيفة التالية في رمز setup.py الخاص بك:

def find_data_file(filename):
    if getattr(sys, 'frozen', False):
        # The application is frozen
        datadir = os.path.dirname(sys.executable)
    else:
        # The application is not frozen
        # Change this bit to match where you store your data files:
        datadir = os.path.dirname(__file__)

    return os.path.join(datadir, filename)

انظر CX Freeze: استخدام ملفات البيانات

كما يمكنك إنشاء برنامج نصي منفصل يقوم بنسخ الملفات بعد الإنشاء. هذا ما أستخدمه لإعادة بناء التطبيق على Windows (يجب أن يكون لديك "GNU Utilities for Win32" مثبتة لجعل "CP" أعمال).

build.bat:

cd .
del build\*.* /Q
python setup.py build
cp -r icons build/exe.win32-2.7/
cp -r interfaces build/exe.win32-2.7/
cp -r licenses build/exe.win32-2.7/
cp -r locale build/exe.win32-2.7/
pause
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top