python - que - makemigrations django
Transición de Python2.4 a Python2.6 en CentOS. Problema de migración del módulo (4)
Es posible que todavía no se pueda acceder a algunas bibliotecas de Python, ya que con Python 2.6 site-packages
se cambia a dist-packages
.
La única forma en ese caso es mover todo lo que se genera en los paquetes del sitio (por ejemplo, mediante make install
) a dist-packages y crear un sym-link.
Hola chicos, tengo un problema para actualizar Python de 2.4 a 2.6:
Tengo CentOS 5 (completo)
Tiene python 2.4 viviendo en /usr/lib/python2.4/
Módulos adicionales están viviendo en /usr/lib/python2.4/site-packages/
Construí Python 2.6 desde fuentes en /usr/local/lib/python2.6/
Establecí Python predeterminado en python2.6
Ahora los módulos antiguos para 2.4 están fuera de pythonpath y están "perdidos"
En particular, yum está roto ("ningún módulo llamado yum")
Entonces, ¿cuál es la forma correcta de migrar / instalar módulos a python2.6?
Hay un par de opciones...
Si los módulos se ejecutarán en Python 2.6, simplemente puede crear enlaces simbólicos desde el directorio 2.6 paquetes-sitio al directorio 2.4 paquetes-sitio.
Si no se ejecutarán en 2.6, entonces es posible que deba volver a compilar contra 2.6, o instale versiones actualizadas de ellos. Solo asegúrate de estar usando 2.6 cuando llamas a
"python setup.py"
...
Es posible que desee publicar esto en serverfault.com, si se encuentra con desafíos adicionales.
No están rotos, simplemente no están instalados. La solución a eso es instalarlos en 2.6. Pero primero deberíamos ver si realmente deberías hacer eso ...
Sí, Python, cuando esté instalado, reemplazará el comando python por la versión instalada (a menos que lo ejecute con --alt-install). No dices exactamente cuál es tu problema, así que voy a adivinar. Su problema es que muchos comandos locales que usan Python ahora fallan, porque se ejecutan con Python 2.6 y no con Python 2.4. ¿Es eso correcto?
Si eso es así, simplemente elimine / usr / local / bin / python, y asegúrese de que / usr / bin / python sea un enlace simbólico a /usr/bin/python2.4. Entonces tendría que escribir python2.6 para ejecutar python2,6, pero eso está bien. Esa es la mejor manera de hacerlo. Entonces solo necesita instalar los paquetes que necesita en 2.6.
Pero si mi suposición es incorrecta, y realmente necesita instalar todos esos paquetes en 2.6, entonces no se preocupe demasiado. En primer lugar, instale setuptools. Incluye una secuencia de comandos easy_install, y luego puede instalar módulos con
easy_install <modulename>
Descargará el módulo de pypi.python.org e instalarlo. Y también instalará cualquier módulo que sea una dependencia. easy_install puede instalar cualquier módulo que esté utilizando distutils como instalador, y no muchos no lo hacen. Esto hará que la instalación del 90% de esos módulos sea muy sencilla.
Si el módulo tiene un componente C, lo compilará, y luego necesitará los encabezados de la biblioteca también, y eso será más trabajo, y todo lo que puede hacer allí es instalarlos de la manera estándar de CentOS.
No debe usar enlaces simbólicos entre versiones, porque las bibliotecas generalmente son para una versión particular. Para 2.4 y 2.6 creo que los archivos .pyc son compatibles (pero no estoy 100% seguro), así que eso puede funcionar, pero cualquier módulo que use C se romperá. Y otras versiones de Python también tendrán archivos .pyc incompatibles. Y estoy seguro de que si haces eso, la mayoría de las personas de Python no te ayudarán si lo haces. ;-)
En general, intento mantener el sistema python "limpio", es decir, no instalo nada allí que no esté instalado con las herramientas de embalaje. En cambio, utilizo virtualenv o buildout para permitir que cada aplicación tenga su propia ruta de acceso de python donde están las dependencias en vivo. Así que cada proyecto que tengo básicamente tiene su propio conjunto de bibliotecas. Se vuelve más fácil de esa manera.
easy_install es bueno, pero hay una forma de bajo nivel para instalar el módulo, solo:
- descomprimir la fuente del módulo en algún directorio
- tipo "instalación de python setup.py"
Por supuesto, debe hacer esto con la versión de intérprete de Python instalada requerida; para verificarlo escribe:
python -V