스크립트를 실행할 때 이상한 문제가 발생하여 pymongo
을로드 할 수 없지만 hashbang 인터프리터 (/usr/bin/env python
)를 실행하면 사용할 수 있습니다.모듈은 콘솔에서 가져올 수 있지만 스크립트에서는 가져올 수 없습니다.
원래 전화 import pymongo
은 수업에 상당히 깊숙이 묻혀 있었지만 1 번째 줄에서 호출해도 실패합니다.
왜 이런가요? 여기
# /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
여기
는
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
파이썬은'sys.path'에 나열된 장소에서 모듈을 찾습니다. 어쩌면이 변수를 두 경우 모두 비교하면 도움이됩니다. –
아마 스크립트는'sys.path'를 수정합니까? – mata
대부분의 경우 컴퓨터에 여러 버전의 python이 설치되어 있습니다. 당신이 "원래"라고 부르는 것의 파이썬 경로는 아마도 해시 뱅 enterpreter가 가지고있는 것과 같은 파이썬이 아닐 것입니다. –