python Cx_freeze का उपयोग करते समय मैं अन्य फ़ाइलों को कैसे बंडल कर सकता हूं?




distutils cx-freeze (4)

मैं विंडोज सिस्टम पर पायथन 2.6 और सीएक्स_फ्रीज़ 4.1.2 का उपयोग कर रहा हूं। मैंने अपना निष्पादन योग्य बनाने के लिए 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='[email protected]',
  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 फ़ाइल चाहिए?


इसके अलावा आप अलग स्क्रिप्ट बना सकते हैं जो निर्माण के बाद फ़ाइलों की प्रतिलिपि बनायेगा। विंडोज़ पर ऐप का पुनर्निर्माण करने के लिए मैं इसका उपयोग करता हूं (आपको "सीपी" काम करने के लिए "Win32 के लिए जीएनयू यूटिलिटीज" स्थापित होना चाहिए)।

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

यहां एक और जटिल उदाहरण है: 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)

सीएक्स-फ्रीज देखें: डेटा फ़ाइलों का उपयोग करना


पता लगा लिया।

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 = '[email protected]',
    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 की एक सूची हो सकती है जिसमें टुपल का पहला भाग पूर्ण पथ वाला फ़ाइल नाम होता है और दूसरा आधा पूर्ण पथ के साथ गंतव्य फ़ाइल नाम होता है।

(जब प्रलेखन की कमी उत्पन्न होती है, तो मेंढक कोर्मिट से परामर्श लें)





cx-freeze