2011-07-24 4 views
2

Je travaille sur un serveur sans serveur X et essaie d'exécuter un script qui utilise un module spynner, ce qui nécessite un serveur X. Pour ce faire, je veux lancer Xvfb.Exécution de Xvfb à partir de Python

je peux exécuter le script en appelant via xvfb-run, i.e. .:

xvfb-run python2.6 try.py. 

Cela fonctionne sans problème. Cependant, j'ai besoin d'invoquer Xvfb depuis le script. A cet effet, j'ai essayé d'utiliser subprocess comme suit:

xvfb = subprocess.Popen(['Xvfb', ':99']) 

Après avoir ajouté ce morceau de code au début du script, et d'essayer d'exécuter le script comme

python2.6 try.py 

Je reçois le message:

: cannot connect to X server 

Y at-il autre chose que je dois faire? Merci d'avance.

Répondre

2

vous devrez ajouter:

import os 
os.environ["DISPLAY"]=":99" 

de telle sorte que quand il va ouvrir la connexion au serveur X, il sera en mesure de trouver l'instance Xvfb que vous avez commencé

+0

Cela fonctionne parfaitement. Merci beaucoup. –

4

Pour futurs visiteurs, il est à noter que PyVirtualDisplay offre une abstraction sur Xvfb pour le rendre facile à utiliser à partir de Python.

Questions connexes