2011-12-20 35 views
12

Estoy tratando de encontrar la forma de construir un paquete fuente de Python que se pueda instalar a través de pip. Intenté crear un proyecto de prueba con el archivo setup.py descrito en http://packages.python.org/an_example_pypi_project/setuptools.html y una cantidad de archivos de prueba simples en los directorios especificados.instalando un archivo tarball de paquete de Python con pip

Después de crear un archivo fuente para el proyecto llamado dist/an_example_pypi_project-0.0.4.tar.gz con python setup.py sdist, traté de instalarlo en un entorno virtualenv llamados ~/TEST con ~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz. Aunque PIP no lanzó ningún error, no parecía para instalar el paquete:

$ ~/TEST/bin/pip install dist/an_example_pypi_project-0.0.4.tar.gz 
Unpacking ./dist/an_example_pypi_project-0.0.4.tar.gz 
    Running setup.py egg_info for package from file:///home/lebedov/an_example_pypi_project/dist/an_example_pypi_project-0.0.4.tar.gz 

Cleaning up... 
$ find ~/TEST -name "an_example*" 
$ 

Tenga en cuenta que yo era capaz de instalar desde el archivo comprimido utilizando easy_install:

$ ~/TEST/bin/easy_install dist/an_example_pypi_project-0.0.4.tar.gz 
Processing an_example_pypi_project-0.0.4.tar.gz 
Running an_example_pypi_project-0.0.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-tfXxeW/an_example_pypi_project-0.0.4/egg-dist-tmp-N2QY_N 
warning: build_py: byte-compiling is disabled, skipping. 

warning: install_lib: byte-compiling is disabled, skipping. 

zip_safe flag not set; analyzing archive contents... 
Adding an-example-pypi-project 0.0.4 to easy-install.pth file 

Installed /home/lebedov/TEST/lib/python2.7/site-packages/an_example_pypi_project-0.0.4-py2.7.egg 
Processing dependencies for an-example-pypi-project==0.0.4 
Finished processing dependencies for an-example-pypi-project==0.0.4 
$ find ~/TEST/ -name "an_example*"         
/home/lebedov/TEST/lib/python2.7/site-packages/an_example_pypi_project-0.0.4-py2.7.egg 

¿Estoy dejando de configurar algo en el paquete para que sea instalable con pip? Estoy usando Python 2.7.2, distribuyo 0.6.21, virtualenv 1.7 y pip 1.0.2.

+1

El problema parece surgir solo cuando invoco pip mientras que el directorio actual es el que contiene el origen del proyecto. Parece que la presencia del subdirectorio .egg-info creado después de crear la distribución fuente confunde a pip. No estoy seguro de si esto es un error. Preguntaré a los desarrolladores de pip. – lebedov

+2

Para referencia futura, aquí está la consulta: https://github.com/pypa/pip/issues/414 – lebedov

+0

Esto funciona para mi proyecto, y también tengo una .egg-info. ¿Has echado un vistazo a tus directorios usando 'tree'? –

Respuesta

4

El informe de errores que publicó en github tenía excelentes instrucciones para reproducir. (Comenté el ticket y copié la respuesta aquí.)

Seguí esas instrucciones al pie de la letra utilizando esas versiones exactas de los paquetes que enumeró y todavía no puedo reproducir este problema.

Aquí está mi salida de pip install --verbose para el comando en cuestión:

Unpacking ./dist/anyjson-0.3.1.tar.gz 
    Running setup.py egg_info for package from file:///home/david/projects/anyjson-0.3.1/dist/anyjson-0.3.1.tar.gz 
    running egg_info 
    creating pip-egg-info/anyjson.egg-info 
    writing pip-egg-info/anyjson.egg-info/PKG-INFO 
    writing top-level names to pip-egg-info/anyjson.egg-info/top_level.txt 
    writing dependency_links to pip-egg-info/anyjson.egg-info/dependency_links.txt 
    writing manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
    warning: manifest_maker: standard file '-c' not found 

    reading manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
    reading manifest template 'MANIFEST.in' 
    writing manifest file 'pip-egg-info/anyjson.egg-info/SOURCES.txt' 
Installing collected packages: anyjson 
    Running setup.py install for anyjson 
    running install 
    running build 
    running build_py 
    creating build 
    creating build/lib.linux-i686-2.7 
    creating build/lib.linux-i686-2.7/anyjson 
    copying anyjson/__init__.py -> build/lib.linux-i686-2.7/anyjson 
    running install_lib 
    creating /tmp/TEST/lib/python2.7/site-packages/anyjson 
    copying build/lib.linux-i686-2.7/anyjson/__init__.py -> /tmp/TEST/lib/python2.7/site-packages/anyjson 
    byte-compiling /tmp/TEST/lib/python2.7/site-packages/anyjson/__init__.py to __init__.pyc 
    running install_egg_info 
    running egg_info 
    writing anyjson.egg-info/PKG-INFO 
    writing top-level names to anyjson.egg-info/top_level.txt 
    writing dependency_links to anyjson.egg-info/dependency_links.txt 
    warning: manifest_maker: standard file '-c' not found 

    reading manifest file 'anyjson.egg-info/SOURCES.txt' 
    reading manifest template 'MANIFEST.in' 
    writing manifest file 'anyjson.egg-info/SOURCES.txt' 
    Copying anyjson.egg-info to /tmp/TEST/lib/python2.7/site-packages/anyjson-0.3.1-py2.7.egg-info 
    running install_scripts 
    writing list of installed files to '/tmp/pip-gvBT02-record/install-record.txt' 
Successfully installed anyjson 
Cleaning up... 

Tal vez usted podría agregar a su --verbose pip mandato de instalación y después de la salida para la comparación?

+1

Tuve un problema similar. Comenté PYTHONDONTWRITEBYTECODE en mi archivo .bashrc, cerré sesión, inicié sesión, comencé mi entorno virtual y pip install funcionó bien. – highpost

Cuestiones relacionadas