Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Crossbar 0.12.1 - wsgi error - No module named django

+3 votes

Depuis la mise a jour en 0.12.1, j'ai une erreur lors du lancement de mon projet Django qui tournait et tourne encore tres bien en 0.11 :

[Controller 210] crossbar.error.invalid_configuration: 
WSGI app module 'myproject.wsgi' import failed: No module named django - 
Python search path was [u'/myproject', '/opt/crossbar/site-packages/crossbar/worker', '/opt/crossbar/bin', '/opt/crossbar/lib_pypy/extensions', '/opt/crossbar/lib_pypy', '/opt/crossbar/lib-python/2.7', '/opt/crossbar/lib-python/2.7/lib-tk', '/opt/crossbar/lib-python/2.7/plat-linux2', '/opt/crossbar/site-packages']

Même erreur si je reprend le tutoriel sur le wsgi dispo dans la doc de crossbar :
http://crossbar.io/docs/WSGI-Host-Service/

" WSGI app module 'myapp' import failed: No module named flask "

En detail :

2016-02-11T12:05:51+0000 [Router        170] NativeWorkerSession.onUserError
Traceback (most recent call last):
  File "/opt/crossbar/site-packages/autobahn/twisted/websocket.py", line 165, in _onMessage
    self.onMessage(payload, isBinary)
  File "/opt/crossbar/site-packages/autobahn/wamp/websocket.py", line 90, in onMessage
    self._session.onMessage(msg)
  File "/opt/crossbar/site-packages/autobahn/wamp/protocol.py", line 755, in onMessage
    on_reply = txaio.as_future(endpoint.fn, *invoke_args, **invoke_kwargs)
  File "/opt/crossbar/site-packages/txaio/tx.py", line 339, in as_future
    return maybeDeferred(fun, *args, **kwargs)
--- <exception caught here> ---
  File "/opt/crossbar/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/opt/crossbar/site-packages/crossbar/worker/router.py", line 795, in start_router_transport
    root = self._create_resource(root_config, nested=False)
  File "/opt/crossbar/site-packages/crossbar/worker/router.py", line 969, in _create_resource
    raise ApplicationError(u"crossbar.error.invalid_configuration", "WSGI app module '{}' import failed: {} - Python search path was {}".format(mod_name, e, sys.path))
autobahn.wamp.exception.ApplicationError: ApplicationError(error=<crossbar.error.invalid_configuration>, args=["WSGI app module 'myapp' import failed: No module named flask - Python search path was [u'/root/flask', '/opt/crossbar/site-packages/crossbar/worker', '/usr/bin', '/opt/crossbar/lib_pypy/__extensions__', '/opt/crossbar/lib_pypy', '/opt/crossbar/lib-python/2.7', '/opt/crossbar/lib-python/2.7/lib-tk', '/opt/crossbar/lib-python/2.7/plat-linux2', '/opt/crossbar/site-packages']"], kwargs={}, enc_algo=None)

2016-02-11T12:05:51+0000 [Controller    165] crossbar.error.invalid_configuration: WSGI app module 'myapp' import failed: No module named flask - Python search path was [u'/root/flask', '/opt/crossbar/site-packages/crossbar/worker', '/usr/bin', '/opt/crossbar/lib_pypy/__extensions__', '/opt/crossbar/lib_pypy', '/opt/crossbar/lib-python/2.7', '/opt/crossbar/lib-python/2.7/lib-tk', '/opt/crossbar/lib-python/2.7/plat-linux2', '/opt/crossbar/site-packages']

Django, comme Flask, fonctionne tres bien en dehors de crossbar.
Je tourne sur un conteneur docker tout frais avec python 2.7.

Quelqu'un arrive t il a reproduire l'erreur avec cette nouvelle version ou suis je le seul ?
Auriez vous une idée du pourquoi ?

demandé 11-Fev-2016 par Nasjo (142 points)

comme il est dit qu'il ne le trouve pas là dedans ...

Python search path was [u'/myproject', '/opt/crossbar/site-packages/crossbar/worker', '/opt/crossbar/bin', '/opt/crossbar/lib_pypy/extensions', '/opt/crossbar/lib_pypy', '/opt/crossbar/lib-python/2.7', '/opt/crossbar/lib-python/2.7/lib-tk', '/opt/crossbar/lib-python/2.7/plat-linux2', '/opt/crossbar/site-packages']

le module django se trouve dans quel path ? Peut-être que la gestion du path doit être absolu et plus relative .

je viens de refaire le tuto (en installant bien evidement flask + crossbar) et je ne reproduis pas le pb ; je pense que le fichier de conf de crossbar ne fait pas pointer le pythonpath au bon endroit.

Ah bah mince alors. Tu ne reproduis pas l'erreur ? J'ai l’impression d’être fou :)
J'ai tenté tout les dossiers possibles et inimaginable, relatif, absolus, même mettre [..] comme indiqué dans le tuto pour Flask, j'ai la même erreur. Et pourtant j'ai bien un environnement tout propre.
Tu es bien sur d'avoir installé crossbar 0.12 ? Je ne reproduis pas cette erreur avec la 0.11.
Merci a toi :)

Pour travailler dans le même environnement, pourquoi vous "dockerez" pas le tout? suffit de faire un docker avec un petit linux dedans, + install flask / crossbar /python etc... + mise en prod, et là vous êtes sûr à 1000 % d'avoir la même config de dev, et donc le "ça marchait chez moi" n'aura plus lieu d'être (en fait c même une des raisons du pourquoi de docker, c'est pour ne plus avoir ce genre de pb type du genre "chez moi ça marche").

Cdt

Et bien c'est exactement ce que je fais :) Et c'est justement pour cela que je suis tres curieux du pourquoi ça coince chez moi et pas ailleurs. Mais je fais peut etre une erreur dans mon Dockerfile :

from ubuntu

ADD requirements.txt /tmp/

RUN apt-key adv --keyserver hkps.pool.sks-keyservers.net --recv D58C6920
RUN sh -c "echo 'deb http://package.crossbar.io/ubuntu trusty main' > /etc/apt/sources.list.d/crossbar.list"

RUN apt-get update
RUN apt-get install -y language-pack-fr python-pip python-lxml python-imaging tesseract-ocr crossbar

RUN ln /opt/crossbar/bin/crossbar /usr/bin/crossbar

RUN cd /tmp/ && pip install -r requirements.txt

Le Dockerfile "officiel" de Docker me remonte lui par contre une erreur lors du build.
(http://crossbar.io/docs/Installation-on-Docker/)

QQun peut il me confirmer ? Ou me donner un dockerfile propre avec crossbar 0.12 ?
merci.

@Nasjo,

voilà un dockerfile propre pour crossbar

Ben justement, celui ci coince chez moi. Aurais tu réussi à le build ?
Ici, j'ai un :

ImportError: No module named setuptools_ext

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-2ED_2d/pynacl
Storing debug log for failure in /root/.pip/pip.log
The command '/bin/sh -c pip install crossbar[all]' returned a non-zero code: 1

Je vais poster en réponse un Dockerfile qui a fonctionné pour moi, après pas mal de recherche. Mais demain :)
Merci pour ton aide !

Dommage, on n'a pas eu droit à ton docker du dimanche à 5h du matin !

Sinon le docker proposé par la doc a l'air de foirer, après le docker run, pendant que ça télécharge tout ce dont on a besoin, je finis sur une petite erreur ... M'enfin ça a juste l'air d'un serveur down apparemment

Fetched 89.7 MB in 1min 25s (1049 kB/s)
E: Failed to fetch http://httpredir.debian.org/debian/pool/main/libt/libtext-soundex-perl/libtext-soundex-perl_3.4-1+b2_amd64.deb  Error reading from server. Remote end closed connection [IP: 5.153.231.35 80]

E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
The command '/bin/sh -c apt-get update && apt-get -y install build-essential libssl-dev libffi-dev libreadline-dev libbz2-dev libsqlite3-dev libncurses5-dev python-pip python-dev' returned a non-zero code: 100

Mais apparemment ce build fail a déjà été remonté par ici,

EDIT 1 :

Bon, apparement il ne faut pas trop suivre le tuto,
docker build -t crossbar ~/crossbar-hello a l'air de foirer (fin, on re-tombe sur l'erreur ci-dessus)

Du coup en suivant le docker file,

# to build this container:
# docker build -t crossbar .

J'arrive à re-tomber sur la même erreur que toi ;)

Installed /tmp/pip-build-VfPnRU/pynacl/cffi-1.5.2-py2.7-linux-x86_64.egg
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "/tmp/pip-build-VfPnRU/pynacl/setup.py", line 259, in <module>
        "Programming Language :: Python :: 3.5",
      File "/usr/lib/python2.7/distutils/core.py", line 111, in setup
        _setup_distribution = dist = klass(attrs)
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 266, in __init__
        _Distribution.__init__(self,attrs)
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 301, in finalize_options
        ep.load()(self, ep.name, value)
      File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
        ['__name__'])
    ImportError: No module named setuptools_ext
    Complete output from command python setup.py egg_info:


Installed /tmp/pip-build-VfPnRU/pynacl/cffi-1.5.2-py2.7-linux-x86_64.egg

Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "/tmp/pip-build-VfPnRU/pynacl/setup.py", line 259, in <module>

    "Programming Language :: Python :: 3.5",

  File "/usr/lib/python2.7/distutils/core.py", line 111, in setup

    _setup_distribution = dist = klass(attrs)

  File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 266, in __init__

    _Distribution.__init__(self,attrs)

  File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__

    self.finalize_options()

  File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 301, in finalize_options

    ep.load()(self, ep.name, value)

  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load

    ['__name__'])

ImportError: No module named setuptools_ext

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /tmp/pip-build-VfPnRU/pynacl
Storing debug log for failure in /root/.pip/pip.log
The command '/bin/sh -c pip install crossbar[all]' returned a non-zero code: 1

M'enfin, je crois que la ligne qui nous intérésse est celle-ci :

ImportError: No module named setuptools_ext

ça tombe bien cette issue est remontée ici !

il faudrait, apprement, juste faire :

Yep resolved with pip install --upgrade cffi. thnx

Oui je suis sûr de la version ;)

2016-02-15T09:07:08+0100 [Controller   9900] Automatically choosing optimal Twisted reactor
2016-02-15T09:07:08+0100 [Controller   9900] Running on Linux and optimal reactor (epoll) was installed.
2016-02-15T09:07:08+0100 [Controller   9900]      __  __  __  __  __  __      __     __
2016-02-15T09:07:08+0100 [Controller   9900]     /  `|__)/  \/__`/__`|__) /\ |__)  |/  \
2016-02-15T09:07:08+0100 [Controller   9900]     \__,|  \\__/.__/.__/|__)/~~\|  \. |\__/
2016-02-15T09:07:08+0100 [Controller   9900]                                         
2016-02-15T09:07:08+0100 [Controller   9900]     Crossbar.io Version: 0.12.1

@foxmask

ne veux-tu pas essayer dans un docker pour ôter tout doute?

Lol, nan , pour l'heure, docker on se boude

attends que j'me chauffe et je te ferais bien une petite démo dans le thème "docker c bien" un de ces 4

Oui, voila, c'est un peu la merdum leur tuto, ils sont pas a jour. Et lorsque je suis tombé sur mon erreur du début, j'ai d'abord pensé que ça venait de chez eux.
J'ai fait un ptit Docker qui semble bien tourner avec la 0.12. Je la colle en réponse, ça fera plus propre.

1 Réponse

+1 vote
 
Meilleure réponse

Alors, le docker officiel de Crossbar ne fonctionnant pas, je me suis bricolé le mien comme je pouvais.
Hésitez pas si vous voulez l'améliorer.

# Creation de l'image spécifique a l'application en cours.
FROM ubuntu
ENV APPNAME="monappli"

ADD requirements.txt /tmp/

RUN apt-get update
RUN apt-get install -y gcc build-essential python-dev python2.7-dev libxslt1-dev libssl-dev libxml2 libxml2-dev tesseract-ocr python-imaging libffi-dev libreadline-dev libbz2-dev libsqlite3-dev libncurses5-dev python-mysqldb python-pip

RUN cd /tmp/ && pip install -r requirements.txt
RUN pip install -U crossbar[all]

WORKDIR $APPNAME

CMD cd / && cd $APPNAME && python manage.py makemigrations && python manage.py migrate && crossbar start

Prenez un café en attendant, ya pas mal de choses à compiler.
Perso, voici mon requirements.txt :

ipython
django
djangorestframework
djangorestframework-jwt
django-cors-headers
bottlenose
python-amazon-simple-product-api
python-dateutil
beautifulsoup4
datetime
mechanize
pytesseract
requests
répondu 16-Fev-2016 par Nasjo (142 points)
sélectionné 17-Fev-2016 par boblinux

cool, mais ya moyen de leur remonter ça? car ya pas mal de gens qui ont ce pb sur le net, le tuto fou vraiment la me..de =/

Du coup le post peut passer en mode résolu?

Oui ! Toutafé ! Je ne sais toujours pas d’où venait l'erreur que j'ai eu avant. Pourquoi ça tournait avec la v0.11 et pas la 0.12, ça devait être un problème de pythonpath chelou, mais un nouvel environnement propre a résolu tout ceci.
J'avais ouvert un topic dans leur mailinglist, je leur répondrais avec ces infos rapidement.
Merci a tous :)

je pense que t'aurais du filer ton requirements.txt à SO ça aurait été plus clair (et essaye de garder le même pseudo ici et sur SO si possible au moins on pourra te reconnaître plus facilement ;) )

Bonne remarque :) Je mets a jour. Merci !

...