cx-freeze no encuentra todas las dependencias

Tengo una secuencia de comandos de Python (2.7) con algunas importaciones "interesantes" en la parte superior. Inicialmente quería usar py2exe para compilar esto en un archivo ejecutable que puedo distribuir más fácilmente (py2exe no encuentra todas las dependencias).

Me he rendido y estoy tratando de usar cx-freeze en su lugar. Pero, estoy teniendo problemas allí también. Los problemas parecen ser las bibliotecas que he agregado a Python (jinja2 y restkit). Los veo en mi directorio de python ./Lib/site-packages/Jinja2-2.6-py2.7.egg/jinja2 y aquí ./Lib/site-packages/restkit-4.2.1-py2.7.egg/restkit.

Aquí están las importaciones en mi guión:

import datetime
from jinja2 import Environment, PackageLoader
from optparse import OptionParser
from datetime import date, timedelta
from restkit import Resource, BasicAuth, request

Estoy usando un setup.py con cx-freeze. Aquí está el setup.py:

from cx_Freeze import setup, Executable


packages  = ["restkit", "jinja2" , "restkit.client" ]
includes = []
includefiles = []
eggsacutibull = Executable(
    script = "myScript.py",
    initScript = None,
    targetName = "myScript.exe",
    compress = True,
    copyDependentFiles = True,
    appendScriptToExe = False,
    appendScriptToLibrary = False,
    icon = None
    )

setup(
        name = "myScript",
        version = "0.1",
        author = 'vickery',
        description = "MyScript description",
        options = {"build_exe": {"includes":includes, "include_files": includefiles, "packages": packages}},
        executables = [eggsacutibull]
        )

Ejecuto cxfreeze como este:

cxfreeze myScript.py --target-dir exe

Consigo esto en mi compilación:

Missing modules:
? __pypy__ imported from jinja2.debug
? http_parser.http imported from restkit.client
? jinja2._debugsupport imported from jinja2.debug
? jinja2._markupsafe._speedups imported from jinja2._markupsafe
? jinja2.debugrenderer imported from jinja2.debug
? markupsafe imported from jinja2.utils
? pretty imported from jinja2.utils
? socketpool imported from restkit.conn

Y, cuando intento ejecutar el exe, obtengo esto:

Traceback (most recent call last):
  File "c:\Python27\lib\site-packages\restkit-4.2.1-py2.7.egg\restkit\__init__.py", line 9, in <module>
    from restkit.conn import Connection
  File "c:\Python27\lib\site-packages\restkit-4.2.1-py2.7.egg\restkit\conn.py", line 14, in <module>
    from socketpool import Connector
ImportError: No module named socketpool
Traceback (most recent call last):
  File "c:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec code in m.__dict__
  File "myScript.py", line 12, in <module>
ImportError: cannot import name Resource

Editar: Ahora estoy ejecutando cxfreeze correctamente de esta manera:

python setup.py build

También agregué socketpool a mi setup.py:

packages = [ "restkit", "jinja2" , "restkit.client", "restkit.conn", "socketpool" ]

Pero, cuando intento compilar ahora, aparece un error de compilación:

$ python setup.py build
running build
running build_exe
Traceback (most recent call last):
  File "setup.py", line 32, in <module>
    executables = [eggsacutibull]
  File "c:\python27\lib\site-packages\cx_Freeze\dist.py", line 365, in setup
    distutils.core.setup(**attrs)
  File "c:\python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "c:\python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "c:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\python27\lib\distutils\command\build.py", line 127, in run
    self.run_command(cmd_name)
  File "c:\python27\lib\distutils\cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "c:\python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\python27\lib\site-packages\cx_Freeze\dist.py", line 235, in run
    freezer.Freeze()
  File "c:\python27\lib\site-packages\cx_Freeze\freezer.py", line 570, in Freeze
    self.finder = self._GetModuleFinder()
  File "c:\python27\lib\site-packages\cx_Freeze\freezer.py", line 325, in _GetModuleFinder
    finder.IncludePackage(name)
  File "c:\python27\lib\site-packages\cx_Freeze\finder.py", line 534, in IncludePackage
    module = self._ImportModule(name, deferredImports)
  File "c:\python27\lib\site-packages\cx_Freeze\finder.py", line 274, in _ImportModule
    raise ImportError("No module named %r" % name)
ImportError: No module named 'socketpool'

Lo que me ha confundido aquí es que mi script compila bien. Además, puedo importar estos módulos desde un shell de python. Por ejemplo:

$ python
Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socketpool
>>> from restkit import Resource, BasicAuth, request
>>>

¿En qué medida Python está resolviendo módulos que son diferentes a cxfreeze?

Edit2: Desde python puedo hacer esto:

>>> import socketpool
>>> print socketpool.__file__
c:\python27\lib\site-packages\socketpool-0.5.2-py2.7.egg\socketpool\__init__.pyc

¿Es ese un lugar no estándar para buscar un paquete? ¿Puedo usar PYTHONPATH para forzar a cxfreez a buscar socketpool?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta