importorror:没有名为pars的模块

2024-04-19 20:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用mongodb和pymongo运行web应用程序,以提供来自数据库的数据。

我得到的错误是ImportError:没有名为parse的模块。请参阅下面来自apache2 web服务器的error.log:

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、Flask和pymongo的虚拟环境。我正在使用mongodb 2.6.7。

有什么问题吗?


Tags: infromimportwsgivarwwwlineerror
2条回答

Python2.7:

from urlparse import urlparse

Python3:

from urllib.parse import urlparse

python2 urlparse

看起来你在用Python2.x运行你的应用程序,但是你的应用程序使用的模块来自Python3.x。特别是,pymongo试图导入模块urllib.parse,在Python2.x中称为urlparse。结果,用Python2.x执行import urllib.parse会导致一个重要的错误。

I have virtual environment for Python 3.4,

你是如何激活你的虚拟环境的?

回复评论:

I think I did not use virtual environment to install Mongodb

没关系。虚拟env中的pymongo代码连接到mongodb服务器(使用指定端口)。

After installation of Flask and pymongo I deactivated virtual environment.

关于mod_wsgivirtualenv和设置activate_this变量,您是否遵循了Flask docs中的说明?

回复评论#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

是的,您的站点在使用Python2.x执行时运行良好,但是当您开始使用db时,您使用的模块试图在Python3.x中导入库。因此,如果您继续使用Python2.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)进入bin目录:

$ cd bin

4)列出所有文件:

$ ls

5)打开文件activate_this.py并阅读顶部的注释,例如

$ vi activate_this.py

6)点击我在上一次回复中发布的Flash文档的链接,再次阅读那里的材料。

相关问题 更多 >