我是python的新手(大概一周),所以也许我只是错过了一些明显的东西......
我无法在我的脚本code.py
中导入和使用模块。该模块使用easy_install安装,名为googlemaps。我用命令安装了它(成功):
sudo easy_install googlemaps
当我尝试从Python解释器导入模块时,它似乎工作正常:
>>> googlemaps
<module 'googlemaps' from '/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg/googlemaps.pyc'>
但是,当我尝试在脚本中执行相同操作时,它会提供以下回溯:
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']
一切看起来都不错,但如果我从脚本中做同样的事情,结果就会遗漏google-maps-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']
我是否必须在使用脚本时手动添加路径,或者我在这里缺少什么?我没有遇到其他已安装模块的问题。
答案 0 :(得分:0)
在使用模块中的函数之前,必须使用以下内容导入它:
import googlemaps
将模块googlemaps中的函数用作googlemaps.FUNC_NAME()
import googlemaps as gmaps
将模块googlemaps中的函数用作gmaps.FUNC_NAME()
from googlemaps import *
导入整个命名空间并直接使用函数作为FUNC_NAME()。使用此选项时要小心使用其他现有名称进行着色。
有关Python模块的更多参考,请参阅https://docs.python.org/2/tutorial/modules.html。
答案 1 :(得分:0)
这似乎对我有用,但你应该尝试这样的事情: -
import googlemaps
from googlemaps import GoogleMaps
答案 2 :(得分:0)
是的,您需要附加sys.path以包含所需的路径。在解释器和脚本中有一个不同的sys.path真的很奇怪,但我无法帮助你,因为我几乎没有在Windows上如何处理它,而且我对Linux很陌生。
是的,继续:
import sys
sys.path.appen(r"/usr/local/lib/python2.7/dist-packages/googlemaps-1.0.2-py2.7.egg")
在导入googlemaps之前,您可以解决问题,即使它很麻烦且肯定有更好的解决方案。不过,它仍然有效,你现在可以实现它。
答案 3 :(得分:0)
根据Burhan Khalid的建议,我的问题与脚本code.py
由apache webserver使用mod_wsgi
模块运行这一事实有关。它显然没有包含对sys.path的更改,直到运行之后:
sudo service apache2 reload
如果您使用mod_wsgi并遇到类似问题,请尝试一下!