2015-01-31 5 views
3

Я пытаюсь запустить веб-приложение с помощью mongodb и pymongo для обслуживания данных из базы данных.ImportError: Нет модуля с именем parse

Ошибка, которую я получаю, - ImportError: Нет модуля с именем parse. Пожалуйста, смотрите ниже error.log с веб-сервера apache2:

mod_wsgi (pid=18824): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module. 
[:error] [pid 18824:tid 139967053518592] mod_wsgi (pid=18824): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'. 
[:error] [pid 18824:tid 139967053518592] Traceback (most recent call last): 
File "/var/www/FlaskApp/flaskapp.wsgi", line 12, in <module> 
[:error] [pid 18824:tid 139967053518592]  from ABC import app as application 
[:error] [pid 18824:tid 139967053518592] File "var/www/FlaskApp/ABC/__init__.py", line 1, in <module> 
[:error] [pid 18824:tid 139967053518592]  from pymongo import MongoClient 
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/__init__.py", line 92, in <module> 
[:error] [pid 18824:tid 139967053518592]  from pymongo.connection import Connection 
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/connection.py", line 39, in <module> 
[:error] [pid 18824:tid 139967053518592]  from pymongo.mongo_client import MongoClient 
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/mongo_client.py", line 46, in <module> 
[:error] [pid 18824:tid 139967053518592]  from pymongo import (auth, 
[:error] [pid 18824:tid 139967053518592] File "/var/www/FlaskApp/ABC/venv/lib/python3.4/site-packages/pymongo/uri_parser.py", line 18, in <module> 
[:error] [pid 18824:tid 139967053518592]  from urllib.parse import unquote_plus 
[:error] [pid 18824:tid 139967053518592] ImportError: No module named parse 

У меня есть виртуальная среда для Python 3.4, Колба и PyMongo. Я использую mongodb 2.6.7.

Любые идеи, что вызывает проблему?

ответ

4

Похоже, что вы запускаете приложение с помощью python 2.x, но модули, которые использует ваше приложение, - это python 3.x. В частности, pymongo пытается импортировать модуль urllib.parse, который был назван urlparse в python 2.x. В результате выполнение import urllib.parse с python 2.x вызывает ImportError.

I have virtual environment for Python 3.4,

Как вы активировали свою виртуальную среду?

Ответ на комментарий:

I think I did not use virtual environment to install Mongodb

Это нормально. Код pymongo внутри вашего виртуального env - это то, что подключается к вашему серверу mongodb (с использованием указанного порта).

After installation of Flask and pymongo I deactivated virtual environment.

Вы следовали инструкциям в Flask docs с относительно mod_wsgi, virtualenv и установка переменной activate_this?

Ответ на комментарий # 2:

My web-site works in a static mode, only when I start using database it stops working due to this problem with parse module

Да, ваш сайт работает отлично, пока выполняется с Python 2.x, но когда вы начинаете использовать БД, вы используете модули, которые пытаются импортировать библиотеки внутри python 3.x. В результате, если вы продолжаете использовать python 2.x для выполнения своего сайта, то вы не собираетесь использовать db.

I could not figure out what I need to put inside activate_this.py.

Попробуйте это:

1) Перейдите в каталог, содержащий виртуальную среду:

$ cd /some/path/to/venv 

2) Список всех файлов:

$ ls 

3) Изменение в каталог в каталоге:

$ cd bin 

4) Перечислите все файлы:

$ ls 

5) Откройте файл activate_this.py и читать комментарии в верхней части, например,

$ vi activate_this.py 

6) Нажмите на ссылку на документы Flash, которые я опубликовал в своем предыдущем ответе, и снова прочитайте материал там.

+0

Благодарим за предложение! Да, у меня на сервере есть как Python 2.7.8, так и 3.4.2, что вызывает проблемы. Однако Python 3.4.2 используется для виртуальной среды, а Flask и pymongo установлены для виртуальной среды, называемой venv. Я использовал «источник venv/bin/activate». Я установил pymongo, используя pip3 (Python 3.4.2). Я думаю, что я не использовал виртуальную среду для установки Mongodb. После установки Flask и pymongo я отключил виртуальную среду. – user3151858

+0

От @ user3151858: * Нет, я не использовал «activate_this», так как не мог понять, что мне нужно, чтобы вставить в activ_this.py. Кроме этого, я выполнил инструкции по установке «mod_wsgi». Мой веб-сайт работает в статическом режиме, только когда я начинаю использовать базу данных, он перестает работать из-за этой проблемы с модулем синтаксического анализа. * – 7stud

+0

@ user3151858, см. Мой ответ выше. – 7stud