Используете psyco с py2exe? - PullRequest
       23

Используете psyco с py2exe?

1 голос
/ 23 ноября 2011

В моем основном скрипте давайте назовем этот MyScript.py, у меня это так:

import psyco
psyco.full()

И тогда мой setup.py выглядит так:

from distutils.core import setup
import py2exe, sys, os, glob

sys.argv.append('py2exe')

import psyco #speed up compilation
psyco.full()

def find_data_files(source,target,patterns):
    """Locates the specified data-files and returns the matches
    in a data_files compatible format.

    source is the root of the source data tree.
        Use '' or '.' for current directory.
    target is the root of the target data tree.
        Use '' or '.' for the distribution directory.
    patterns is a sequence of glob-patterns for the
        files you want to copy.
    """
    if glob.has_magic(source) or glob.has_magic(target):
        raise ValueError("Magic not allowed in src, target")
    ret = {}
    for pattern in patterns:
        pattern = os.path.join(source,pattern)
        for filename in glob.glob(pattern):
            if os.path.isfile(filename):
                targetpath = os.path.join(target,os.path.relpath(filename,source))
                path = os.path.dirname(targetpath)
                ret.setdefault(path,[]).append(filename)
    return sorted(ret.items())
setup(
    name="MyScript",
    version="1.0",
    description="a script that does something",
    author="Keelx",
    data_files=find_data_files('.','',[
        'gfx/*',
        'data/*',
    ]),
    options={'py2exe': {'bundle_files': 1,'optimize': 2}},
    windows=[{'script': "MyScript.py"}],
    zipfile=None,
)

Создает папку dist с исполняемым файлом, исполняемым файлом win9x и папками gfx и data рядом с исполняемым файлом. Однако, когда я запускаю его, он указывает на журнал, который гласит:

Traceback (последний вызов был последним): Файл «MyScript.py», строка 16, в Файл "zipextimporter.pyo", строка 82, в load_module Файл "psyco__init __. Pyo", строка 64, в WindowsError: [Ошибка 3] Системе не удается найти указанный путь: 'C: \ Documents and Settings \ Keelx \ Desktop \ MyScriptFolder \ dist \ MyScript.exe \ psyco \ _psyco.pyd'

Казалось бы, модуль psyco не помещается в исполняемый файл. Я искал, и я не нашел работающего решения, чтобы заставить py2exe скопировать psyco поверх.

И, пожалуйста, воздержитесь от публикации решений в духе «не используйте py2exe».

Заранее благодарю, кто бы мне здесь не помог.

1 Ответ

0 голосов
/ 23 ноября 2011

Ошибки Hunting down py2exe кажутся мне искусством.Тем не менее, я по крайней мере предложу что-то попробовать.Я py2exe'-сценарий Python с поддержкой psyco и бросил его во включенную часть установки.Это единственная часть, которая выглядит по-другому между вашей установкой и моей старой.

options = {'py2exe': {'packages': [ 'IPython'],
                      'includes': ["psyco"],
                     }
          }

Также мне никогда не удавалось включить оптимизацию.Это всегда вызывало случайные ошибки.Лучше оставить это в моем опыте.Я думаю, что это был matplotlib, который вызвал эти ошибки.

Надеюсь, это поможет, ура,

...