2013-05-17 16 views
5

ho installato come esercitazione del collegamento http://www.reinbach.com/uwsgi-nginx-flask-virtualenv-mac-os-x.html e quando l'esecuzione del comando uwsgi --ini deploy/deploy.ini, il terminale dice che c'è stato un errore di importazione:Flask + Nginx + uWSGI: ImportError: No module named sito

Impostare PYTHONHOME-/virtualenv/sample/

ImportError: No module named site 

ho impostato il mio PYTHONHOME e PYTHONPATH come

export PYTHONPATH=$PYTHONPATH:/Library/Python/2.7/site-packages 
export PYTHONHOME=$PYTHONHOME:/Library/Python/2.7 

Non riesco a capire cosa non va.

Qualcuno potrebbe aiutarmi con il problema?

Tutta informazioni nel terminale appare come segue se è utile:

(env)ios-devmatoMacBook-Pro:hello ios_dev$ uwsgi --ini deploy/deploy.ini 
[uWSGI] getting INI configuration from deploy/deploy.ini 
*** Starting uWSGI 1.9.10 (64bit) on [Fri May 17 16:42:22 2013] *** 
compiled with version: 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) on 17 May 2013 12:41:07 
os: Darwin-11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu- 
1699.32.7~1/RELEASE_X86_64 
nodename: ios-devmatoMacBook-Pro.local 
machine: x86_64 
clock source: unix 
detected number of CPU cores: 4 
current working directory: /Users/ios_dev/Desktop/sample/hello 
detected binary path: /Users/ios_dev/Documents/little/little-web/little_web_dev/env/bin/uwsgi 
your processes number limit is 709 
your memory page size is 4096 bytes 
detected max file descriptor number: 256 
lock engine: OSX spinlocks 
uwsgi socket 0 bound to TCP address 127.0.0.1:3031 fd 3 
Python version: 2.7.1 (r271:86832, Jun 16 2011, 16:59:05) [GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] 

Impostare PYTHONHOME al /virtualenv/sample/

ImportError: No module named site 
+0

Perché stai impostando PYTHONHOME? Dovrebbe anche essere una directory singola e non espressa come un percorso come quello che stai facendo. L'entrata vuota e il colon in esso avrebbero rovinato tutto. –

+0

per favore pubblica il contenuto dello script 'deploy/deploy.ini'. – Ewan

+0

@Graham Dumpleton: ho visto nel tutorial del collegamento che esiste una frase di impostazione di pythonhome, quindi la copio nel mio file. Ma non sono sicuro se sia necessario. – Yuqi

risposta

6

Ecco come ho risolto lo stesso messaggio di errore (ImportError: Nessun modulo sito denominato) che ho ottenuto durante il tentativo di questo tutorial: https://uwsgi.readthedocs.org/en/latest/tutorials/Django_and_nginx.html.

  • Disattivare la virtualenv
  • Installare uWSGI a livello di sistema (se non è già installato a livello di sistema-)

sudo pip install uwsgi

  • Modificare il file uwsgi.ini. Ho commentato la linea con il

home =/path/to/virtualenv

  • uWSGI --ini mysite_uwsgi.ini
+2

Non so perché rimuovere la direttiva home. Questa non è sicuramente la risposta corretta. La direttiva home dice a uwsgi quale virtualenv usare. Quindi lo rimuoverai solo se non stavi usando un ambiente virtuale. ImportError generalmente significa che non può trovare il modulo nella virtualenv definita, quindi assicurati che esista e che i moduli siano effettivamente presenti. –

+0

Non ho fatto downvot. E scusa, non ho intenzione di revocare questo. –

+0

Ho eseguito il rollback della modifica: se si desidera rimuovere la risposta, _delete it_ utilizzando il collegamento "Elimina" in basso a sinistra (accanto a modifica). Invece di non vandalizzare il tuo post. – l4mpi

1

Ho letto un sacco di documenti sulla questione, ma non avere risposta

Per coincidenza, ho risolto questo problema modificando uid e gid come root.

Sembra un problema di autorizzazioni. Non so perché, ma funziona. Ricorda, è molto pericoloso eseguire un ambiente di prodotto come root.

+0

Non è possibile importare un modulo senza le autorizzazioni corrette. Per risolvere questo problema, utilizzare 'chown -R user: group/path/to/env' in modo che il proprietario e il gruppo corretti siano impostati per l'ambiente e impostare le autorizzazioni appropriate. –

0

1, attiva il virtuale si è utilizzato

2, pip installare uwsgi

questa l'azione chiave, poi il

command -v wsgi 

mostrarlo

/virtual-path/bin/uwsgi 

3, l'uso utente corrente per eseguire uwsgi, perché l'altro utente non è attivo il virtualenv

Problemi correlati