2014-10-07 4 views
-1

나는 어쩌면 난 그냥 뭔가를 분명 누락, (1 주일) 파이썬에 안돼서에 설치된 모듈을 사용 할 수 없습니다 내 스크립트에 code.py. 모듈은 easy_install을 사용하여 설치되었으며 googlemaps이라고합니다. 나는이 작업을 수행 할 때,가져오고 모듈을 사용 나는 수 없었다</p> <p>... 스크립트

>>> googlemaps 
<module 'googlemaps' from '/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg/googlemaps.pyc'> 

을하지만 :

sudo easy_install googlemaps 

내가 파이썬 인터프리터에서 모듈을 가져 오려고, 잘 작동하는 것 같다 : 나는 명령 (성공적으로) 그것을 설치 스크립트에서 같은, 다음 역 추적 제공 :

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 239, in process 
    return self.handle() 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 230, in handle 
    return self._delegate(fn, self.fvars, args) 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 420, in _delegate 
    return handle_class(cls) 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 396, in handle_class 
    return tocall(*args) 
    File "/var/www/example.com/application/code.py", line 57, in GET 
    self.generate_map() 
    File "/var/www/example.com/application/code.py", line 64, in generate_map 
    from googlemaps import GoogleMaps 
    ImportError: No module named googlemaps 

나는이 경로 문제의 어떤 종류의 의심을하지만, 나는 완전히 왜 또는 어떻게 그것을 해결하기 위해 이해하지 않습니다.

>>> import sys 
>>> sys.path 
['', '/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] 

모든 것이 잘 보이는,하지만 난 스크립트에서 같은 일을 할 경우 결과는 구글 -지도 - 1.0.2 - py2.7.egg 항목을 누락되었습니다 내가 발행하는 경우 인터프리터에서 다음 :

['/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] 

스크립트에서 사용할 때 수동으로 경로를 추가해야합니까, 아니면 여기서 무엇을 놓치고 있습니까? 다른 설치된 모듈에이 문제가 없었습니다. 에서 함수를 사용하는 googlemaps.FUNC_NAME()로

import googlemaps as gmaps 

을 모듈 Google지도의 기능을 사용할 수

import googlemaps 

:

+1

mod_wsgi를 사용하는 경우 서버를 다시로드 할 수 있습니다. –

+0

아하! 이것은 실제로 트릭을했습니다. 그래서 아파치 사용자가 PYTHONPATH를 업데이트해야 할 필요가 있습니까? – robguinness

+0

아니요 "변경 사항을 즉시"읽지 않습니다. –

답변

0

Burhan Khalid의 제안에 따르면, 제 문제는 스크립트가 mod_wsgi 모듈을 사용하는 아파치 웹 서버에서 실행되고 있다는 사실과 관련이 있습니다. 그것은 분명히 실행 한 후까지의 sys.path에 대한 변경 사항을 포함하지 않았다

sudo service apache2 reload 

에게 당신을 당신이 mod_wsgi에를 사용하여 유사한 문제가 발생하는 경우, 그것은 시도 줘!

0

모듈에서 기능을 사용하기 전에, 당신은 같은 것을 사용하여 가져올 수 있습니다 gmaps.FUNC_NAME 같은 모듈 구글 맵()

from googlemaps import * 

전체 namesp를 가져 에이스 및 기능을 FUNC_NAME()으로 직접 사용하십시오. 이 옵션을 사용하여 다른 기존 이름을 음영 처리하는 것에주의하십시오.

파이썬 모듈에 대한 자세한 내용은 https://docs.python.org/2/tutorial/modules.html을 참조하십시오.

+0

답변 주셔서 감사합니다.하지만 Burhan의 제안은 실제로 저에게 효과적이었습니다. – robguinness

0

이 나를 위해 작동하는 것 같다하지만 당신은 이런 식으로 뭔가를 시도해야합니다 : -

import googlemaps 
from googlemaps import GoogleMaps 
+0

답변 주셔서 감사합니다.하지만 Burhan의 제안은 실제로 저에게 효과적이었습니다. – robguinness

0

예, 당신이 필요한 경로를 포함하도록의 sys.path를 추가해야 할 것입니다. 인터프리터와 스크립트에 다른 sys.path가 있다는 것은 정말 이상한 일입니다. 그러나 Windows에서이 문제를 처리하는 방법을 간신히 모르고 있기 때문에 나는 당신을 도울 수 없습니다. 나는 낯선 사람입니다. 리눅스로.

는 그래서 그래,가는 : Google지도를 가져 오는 당신이 문제를 해결 할 수 있습니다

import sys 
sys.path.appen(r"/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg") 

전에, 지저분한이고 더 나은 솔루션이 확실히있는 경우에도. 그래도 작동하고 지금 구현할 수 있습니다.