Ok, así que realmente quiero hacerlo bien porque sigo encontrándome con él al generar algunos grandes paquetes py2app/py2exe. Así que tengo mi paquete que contiene muchos módulos/paquetes que también pueden estar en los paquetes de sitios de los usuarios/ubicación predeterminada (si un usuario tiene una distribución de python) pero quiero que mis paquetes distribuidos surtan efecto antes de que se ejecuten desde mi distribución .rutas python y orden de importación
Ahora por lo que he leído herePYTHONPATH debe ser la primera cosa añaden a sys.path después de que el directorio actual, sin embargo por lo que he probado en mi máquina que no es el caso y todas las carpetas definidas por en $site-packages$/easy-install.pth
tienen prioridad sobre esto.
Así que, ¿alguien podría darme más explicaciones en profundidad sobre este pedido de importación? // ayúdame a encontrar una manera de establecer las variables ambientales de modo que los paquetes que distribuyo tengan prioridad sobre los instalados por defecto. Hasta ahora mi intento es, por ejemplo, en Mac OS-py2app, en mi guión punto de entrada:
os.environ['PYTHONPATH'] = DATA_PATH + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(DATA_PATH
, 'lib') + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(
DATA_PATH, 'lib', 'python2.7', 'site-packages') + ':'
os.environ['PYTHONPATH'] = os.environ['PYTHONPATH'] + os.path.join(
DATA_PATH, 'lib', 'python2.7', 'site-packages.zip')
Esta es básicamente la estructura del paquete generado por py2app. Luego simplemente:
SERVER = subprocess.Popen([PYTHON_EXE_PATH, '-m', 'bin.rpserver'
, cfg.RPC_SERVER_IP, cfg.RPC_SERVER_PORT],
shell=False, stdin=IN_FILE, stdout=OUT_FILE,
stderr=ERR_FILE)
Aquí python_exe_path es el camino hacia el exe pitón que se agrega por py2app al paquete. Ahora esto funciona bien en una máquina que no tiene una python instalada. Sin embargo, cuando la distribución de python ya está presente, sus paquetes de sitio tienen prioridad.
Probablemente la opción más fácil al distribuir el proyecto py2exe es distribuir todos sus módulos necesarios y pythonXX.dll junto con él, de modo que sea un paquete independiente que no se vea afectado por ninguna versión de python instalada actualmente. Otro proyecto interesante para usted puede ser virtualenv (http://pypi.python.org/pypi/virtualenv) – cwa
Entonces, ¿distribuir pythonXX.dll debería detener el proceso que acabo de describir? ¿A qué nivel de la carpeta de distribución debería estar el .dll? Pregunto porque actualmente estoy agregando pythonXX.dll al paquete, pero ese problema aún ocurre. – Bogdan