2010-01-08 19 views
79

Tengo preguntas sobre los archivos huevo en Python.Cómo crear el archivo huevo de Python

Tengo mucho código de Python organizado por paquete y estoy tratando de crear archivos de huevo. Estoy siguiendo instructions, pero son muy comunes.

Según eso, parece que necesito tener un archivo setup.py.

  1. ¿Podría decirme qué tengo que poner en el archivo setup.py y dónde debería estar?
  2. Supongo que es suficiente para crear setup.py y luego iniciar "setup.py bdist_egg" para obtener el archivo de huevo. ¿Podrías confirmar?
  3. ¿Es posible incluir solo archivos .pyc en el archivo de huevos?
  4. Tener el archivo .egg ¿cómo puedo simplemente iniciar el código sin desempaquetar como java -jar <jar file>?
+0

¿Qué debo usar en vez de huevos, entonces? Aquí está mi pregunta sobre los huevos http://stackoverflow.com/questions/14902732/what-is-pastedeploy-and-do-i-need-to-learn-it-if-eggs-in-python-are-considered-g – Green

+0

@YauhenYakimovich: ese enlace ahora es un dominio de spam estacionado. Tal vez vale la pena editar para usar https://packaging.python.org/en/latest/wheel_egg/? –

+0

@ChrisAdams thnx –

Respuesta

69

Está leyendo la documentación incorrecta. ¿Quieres esto: http://peak.telecommunity.com/DevCenter/setuptools

  1. setup.py Creación está cubierto en la documentación distutils en la documentación de la biblioteca estándar de Python here. La principal diferencia (para los huevos de pitón) es import setup de setuptools, no distutils.

  2. Yep. Eso debería estar bien.

  3. Yo no lo creo. Los archivos pyc pueden depender de la versión y de la plataforma. Es posible que pueda abrir el huevo (solo deben ser archivos zip) y eliminar los archivos .py dejando .pyc archivos, pero no sería recomendable.

  4. No estoy seguro. Eso podría ser "Modo de desarrollo". ¿O está buscando algún modo "py2exe" o "py2app"?

+49

+1: Nunca incluya los archivos .pyc. Ellos son totalmente confusos. Copiamos accidentalmente archivos .pyc de Windows en un cuadro de Linux y teníamos los mensajes de seguimiento de errores más confusos. Porque los nombres de archivo son los nombres de archivo originales de Windows. Era aterrador ver esos nombres de archivos de Windows en el servidor de producción. –

+0

simplemente use pyinstaller – Nickpick

27

Para # 4, lo más cercano a partir de Java con un archivo JAR para su aplicación es una característica nueva en Python 2.6, executable zip files and directories.

python myapp.zip 

Dónde myapp.zip es un comprimido que contiene un archivo __main__.py que se ejecuta como el archivo de secuencia de comandos para ser ejecutada. Sus dependencias de los paquetes también se pueden incluir en el archivo:

__main__.py 
mypackage/__init__.py 
mypackage/someliblibfile.py 

También puede ejecutar un huevo, pero el encantamiento no es tan bonito:

# Bourn Shell and derivatives (Linux/OSX/Unix) 
PYTHONPATH=myapp.egg python -m myapp 
rem Windows 
set PYTHONPATH=myapp.egg 
python -m myapp 

Esto pone el myapp.egg en la ruta Python y usa el argumento -m para ejecutar un módulo. Su myapp.egg probablemente será algo como:

myapp/__init__.py 
myapp/somelibfile.py 

y Python se ejecutará __init__.py (usted debe comprobar que __file__=='__main__' en su aplicación para el uso de línea de comandos).

archivos del huevo esté archivos zip por lo que podría ser capaz de añadir __main__.py a su huevo con una herramienta de compresión y que sea ejecutable en Python 2.6 y ejecutarlo como python myapp.egg en lugar del encantamiento por encima de donde se establece la variable de entorno PYTHONPATH.

Más información sobre archivos ejecutables zip que incluye cómo hacerlos directamente ejecutables con un shebang se puede encontrar en Michael Foord's blog post on the subject.

+0

Como alternativa, puede usar el entorno virtual http://guide.python-distribute.org/installation.html#upgrading –

8

Creo que debería usar python wheels para la distribución en lugar de huevo ahora.

Las ruedas son el nuevo estándar de distribución de pitón y están destinadas a reemplazar huevos. El soporte se ofrece en pip> = 1.4 y setuptools> = 0.8.

+0

No puede importar una rueda, por lo que puedo ver. A veces solo quiero implementar mi script junto con un huevo para hacerlo más portátil. – RPGillespie

Cuestiones relacionadas