2011-02-08 21 views
16

Creé el motor de quickfix (http://www.quickfixengine.org/) para una de mis tareas y también creé el soporte de python para él. Desafortunadamente, este es un env multiusuario y no tengo acceso a la ruta de instalación de oython. Por lo tanto, el comando make install intenta copiar los archivos y falla. Me las arreglé para comentar las dos líneas donde intenta hacer eso y completar la instalación make. Como no puedo poner los archivos allí, ¿dónde puedo poner el archivo .so creado? ¿Y cómo dejo que Python sepa que está allí? Miré la documentación de python.ord pero solo describe el proceso para las instalaciones de setup.py. También intenté poner la ruta para .so en sys.path, eso no funcionó. También hay algún documento sobre la anatomía de un paquete de Python? Gracias.Cómo instalar una biblioteca de Python manualmente

+0

"También intenté poner la ruta para .so en sys.path, eso no funcionó."¿Has intentado importar el módulo de extensión de un script (o sesión interactiva) en el mismo directorio que el archivo' .so' para la extensión? – gotgenes

Respuesta

15

Voy a suponer que compilar el paquete QuickFix no produce un archivo setup.py, sino que solo compila los enlaces de Python y se basa en make install para colocarlos en el lugar apropiado.

En este caso, una solución rápida y sucia es compilar la fuente Quickfix, localice los módulos de extensión de Python (que se indica en su sistema éstas final con una extensión .so), y añadir ese directorio a su PYTHONPATH ambientales variables, por ejemplo, agregar

export PYTHONPATH=~/path/to/python/extensions:PYTHONPATH 

o una línea similar en el archivo de configuración del shell.

Una solución más robusta incluiría asegurarse de compilar con ./configure --prefix=$HOME/.local. Suponiendo que QuickFix sabe poner los archivos de Python en el site-packages apropiado, cuando lo hace make install, debe instalar los archivos en ~/.local/lib/pythonX.Y/site-packages, que, para Python 2.6+, ya debería estar en su ruta de Python como per-user site-packages directory.

Si, por el contrario, sí ofrece un archivo setup.py, sólo tiene que ejecutar

python setup.py install --user 

para Python 2.6+.

2

Aquí está el FAQ oficial sobre la instalación de módulos de Python: http://docs.python.org/install/index.html

Hay algunos consejos que pueden ayudarle.

+0

sí, lo he visto. Pero el problema es que describe cómo instalarlo algo que viene empaquetado como un módulo de python (algo que se instalará al usar setup.py). No le dice cómo instalar una biblioteca que dejó un .so alrededor. :( –

+0

Aquí hay algunas otras ideas http: // dubroy .com/blog/so-you-want-to-install-a-python-package/Parece que la solución para usted podría ser pip (http://pypi.python.org/pypi/pip). –

3

Necesita instalarlo en un directorio en su carpeta de inicio y de alguna manera manipular PYTHONPATH para que ese directorio esté incluido.

Lo mejor y más fácil es usar virtualenv. Pero eso requiere instalación, causando una captura 22. :) Pero compruebe si virtualenv está instalado. Si se instala se puede hacer esto:

$ cd /tmp 
$ virtualenv foo 
$ cd foo 
$ ./bin/python 

a continuación, puedes ejecutar la instalación como de costumbre, con/tmp/foo/python setup.py install. (Obviamente necesita crear el entorno virtual en su carpeta en su directorio de inicio, no en/tmp/foo.;))

Si no hay virtualenv, puede instalar su propia Python local. Pero eso puede no estar permitido tampoco. A continuación, puede instalar el paquete en un directorio local para paquetes:

$ wget http://pypi.python.org/packages/source/s/six/six-1.0b1.tar.gz#md5=cbfcc64af1f27162a6a6b5510e262c9d 
$ tar xvf six-1.0b1.tar.gz 
$ cd six-1.0b1/ 
$ pythonX.X setup.py install --install-dir=/tmp/frotz 

Ahora tiene que añadir a su /tmp/frotz/pythonX.X/site-packages PYTHONPATH, y que debe estar en marcha y funcionando!

Cuestiones relacionadas