Nel mio caso ho incorporato Python nella mia applicazione. Quando il percorso della mia applicazione contiene un carattere non latin-1 Py_Initialize chiamate exit (1) internamente (ulteriori informazioni successivamente).Python con percorso PYTHONHOME non latin-1
Quindi ho controllato se è possibile riprodurre questo con l'eseguibile dell'interprete standard.
Python-2.7.x su Windows non sembra funzionare quando il percorso di PYTHONHOME contiene un carattere al di fuori del set di caratteri latin-1. Il problema è che il modulo del sito non è stato trovato e importato. Dal momento che le dieresi sembrano funzionare, qual è il vero limite qui? È supportato solo Latin-1? Perché funziona su OSX allora?
C:\Users\ъ\Python27\python.exe // fails to start (KOI8-R)
^
C:\Users\ġ\Python27\python.exe // fails to start (latin-3)
^
C:\Users\ä\Python27\python.exe // works fine (latin-1)
^
Qualche idea?
Background:
Non ho fatto un passo attraverso il codice ancora, ma Python 2.6 e Python 2.7 anche comportarsi in modo diverso quando sito non è disponibile. Py 2.6 stampa semplicemente un messaggio, Py 2.7 rifiuta di iniziare.
static void
initsite(void)
{
PyObject *m;
m = PyImport_ImportModule("site");
if (m == NULL) {
...
// Python 2.7 and later
exit(1);
// Python 2.6 and prior
PyFile_WriteString("'import site' failed; traceback:\n", f);
}
...
}
pitone 2,7: https://github.com/enthought/Python-2.7.3/blob/master/Python/pythonrun.c#L725
pitone 2.6: https://github.com/python-git/python/blob/master/Python/pythonrun.c#L705
Hai provato a usare Python 3, invece? Hanno ridimensionato la gestione Unicode, ed è molto più pulito. La mia raccomandazione è in realtà di usare 3 ogni volta che puoi, e 2 solo se devi. –
In Python 3 (dovrebbe) funzionare/i, sì. Devo stare con Python 2 perché questa è la versione che abbiamo incorporato nel nostro software, ma questo cambierà in futuro. – HelloWorld
Puoi approfondire come hai "incorporato" Python nella tua app? chiamandolo da C/C++? qual è il meccanismo che usi? E hai impostato il PYTHONHOME? se sì, come lo si imposta? Come nota a margine, il comportamento di OS FS rispetto ai percorsi unicode varia un po 'su Windows, Mac e Linux/POSIX. E il modo di affrontare questo in CPython 2 ha bisogno di un po 'di giocherellare a volte ... Anche se ho lottato con esso alcune volte con successo –