Paster richiede di essere eseguito dalla directory dei programmi?
-
13-12-2019 - |
Domanda
Im corrente di un server Solaris che utilizza il supervisore per monitorare alcune applicazioni Python.
In precedenza, potrei eseguire il comando:
paster serve /opt/pyapps/menuadmin/prod.ini
.
Da qualsiasi directory sul server.Ci sono stati alcuni problemi recenti e la cartella / opt è stata ripristinata da un backup precedente.Questa cartella conteneva tutte le applicazioni incluso il supervisore.
Ora stiamo affrontando problemi in cui il supervisore non avvia le applicazioni a causa dei "conflitti di versione" in Pylons.
È qui che diventa strano e non ha senso perché questi errori si verifichino.
Se eseguo il comando Paster dall'esterno della directory del programma, lancerà l'errore di conflitto della versione.ad esempio:
cd /
paster serve /opt/pyapps/menuadmin/prod.ini
Traceback (most recent call last):
File "/opt/csw/bin/paster", line 8, in <module>
load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')()
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 93, in run
commands = get_commands()
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 135, in get_commands
plugins = pluginlib.resolve_plugins(plugins)
File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/pluginlib.py", line 82, in resolve_plugins
pkg_resources.require(plugin)
File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 626, in require
File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 528, in resolve
pkg_resources.VersionConflict: (Pylons 0.9.7 (/opt/csw/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg), Requirement.parse('Pylons>=0.10'))
.
Ma se eseguo il comando dall'interno della directory dei programmi, funzionerà bene.ad esempio:
cd /opt/pyapps/menuadmin/
paster serve /opt/pyapps/menuadmin/prod.ini
Starting server in PID 29902.
serving on http://127.0.0.1:3002
.
Non riesco assolutamente a capire il motivo per cui questo sarebbe successo!
Tutti i pensieri o i commenti sono apprezzati !!!!
Soluzione
Basato su ciò che hai detto sembra che stai eseguendo due diverse versioni di Paster.La prima versione esegue il pacchetto di piloni più anziano 0.9.7, mentre il secondo ha la versione più aggiornata che soddisfa o supera i requisiti della tua app.
Quello che farei è prima di controllare quale versione di Paster hai in esecuzione.Dall'esterno del progetto è appena eseguito:
which paster
.
Quindi eseguire lo stesso comando di nuovo all'interno della directory del progetto e confrontare i risultati.Sospetto che troverai che i percorsi differiscono.Se questo è il caso, tutto ciò che devi fare è aggiornare la versione di Pylons per la prima versione, che immagino è l'installazione globale.
Tuttavia, come altri hanno commentato che sarebbe meglio gestire le app all'interno di Virtualenv, specialmente se come sembri indicare che hai più virtualV e quindi più progetti.Fidati di me quando dico che ti farà risparmiare da carichi di mal di testa in seguito, da qualcuno che non ha fatto questo in origine.