我在运行脚本时遇到了一个奇怪的问题,我无法加载pymongo
,但在运行hashbang解释器(/usr/bin/env python
)时它可用。模块可以在控制台中导入,但不能在脚本中导入
原来的电话号码import pymongo
被深埋在一个班级里,但即使我在第一行叫它,它也会失败。
这是为什么?
下面是从表示pymongo
蟒控制台一些输出是可用的:
# /usr/bin/env python
Python 2.7.4 (default, Apr 23 2013, 14:02:51)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymongo
>>>
这里是前三行的脚本
# head -n 3 ./app/app.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pymongo
这里是失败:
# python ./app/app.py
Traceback (most recent call last):
File "./app/app.py", line 3, in <module>
import pymongo
ImportError: No module named pymongo
但运行/usr/bin/env
工作好吗...为什么?
# /usr/bin/env python ./app/app.py
Traceback (most recent call last):
File "./app/app.py", line 37, in <module>
db = backend.flowbackend.getBackendObject(config.db_backend, config.db_host, config.db_port, config.db_user, config.db_password, config.db_name)
File "./app/../lib/backend/flowbackend.py", line 268, in getBackendObject
return MongoBackend(host, port, user, password, databaseName)
File "./app/../lib/backend/mongobackend.py", line 13, in __init__
self.connect()
File "./app/../lib/backend/mongobackend.py", line 62, in connect
self.conn = pymongo.Connection(self.host, self.port)
File "/usr/local/lib/python2.7/site-packages/pymongo/connection.py", line 220, in __init__
max_pool_size, document_class, tz_aware, _connect, **kwargs)
File "/usr/local/lib/python2.7/site-packages/pymongo/mongo_client.py", line 336, in __init__
raise ConnectionFailure(str(e))
pymongo.errors.ConnectionFailure: could not connect to 127.0.0.1:27017: [Errno 111] Connection refused
python在'sys.path'列出的地方查找模块。也许比较这个变量对两种情况都有帮助。 – 2013-04-23 19:52:36
可能脚本修改了'sys.path'? – mata 2013-04-23 19:52:51
你很可能在你的计算机上安装了多个python版本。 python中你所说的“original”的路径可能与hashbang enterpreter所具有的python不同。 – 2013-04-23 19:54:58