Форум сайта python.su
Даже не знаю как точнее сормулировать проблему , буквально несколько дней как начал изучать Питон и конечно много не понятного и “мистических” ошибок , вот одна из таких
#!/usr/bin/env python
import sys
import urlparse
#from urlparse import urlparse
o = urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2")
bash>python url.pyПроверил в системе есть модуль urlparse
./urlparse.py
Traceback (most recent call last):
File “./urlparse.py”, line 4, in <module>
import urlparse
File “/home/denis/programing/python/learn/ex/urlparse.py”, line 7, in <module>
o = urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2“)
TypeError: ‘module’ object is not callable
Error in sys.excepthook:
Traceback (most recent call last):
File ”/usr/lib/python2.5/site-packages/apport_python_hook.py“, line 38, in apport_excepthook
from apport.fileutils import likely_packaged
File ”/usr/lib/python2.5/site-packages/apport/__init__.py“, line 1, in <module>
from apport.report import Report
File ”/usr/lib/python2.5/site-packages/apport/report.py“, line 14, in <module>
import subprocess, tempfile, os.path, urllib, re, pwd, grp, os, sys
File ”/usr/lib/python2.5/urllib.py“, line 30, in <module>
from urlparse import urljoin as basejoin
File ”/home/denis/programing/python/learn/ex/urlparse.py“, line 7, in <module>
o = urlparse(”http://www.mail.ru:8080/index.php?param=1¶m2=2“)
TypeError: ‘module’ object is not callable
Original exception was:
Traceback (most recent call last):
File ”./urlparse.py“, line 4, in <module>
import urlparse
File ”/home/denis/programing/python/learn/ex/urlparse.py“, line 7, in <module>
o = urlparse(”http://www.mail.ru:8080/index.php?param=1¶m2=2")
TypeError: ‘module’ object is not callable
locate urlparse.pyТакже эти пути находятся в переменных окружения Питона
/usr/lib/python2.4/urlparse.py
/usr/lib/python2.5/urlparse.py
>>>sys.pathТак в чёмже может быть проблема ?
Офлайн
Просто у Вас закоментирован правильный импорт :-)
from urlparse import urlparse
o = urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2")
Офлайн
или так:
import urlparse
o = urlparse.urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2")
В общем сами решайте как вам удобнее…
Офлайн
Чуть подобнее:
import urlparse
модуль urlparse появляется в локальном пространстве имён и именно его Вы пытались вызвать как функцию, получая соотв. исключение (TypeError: ‘module’ object is not callable). Можно вызвать функцию urlparse из этого модуля так:
o = urlparse.urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2")
а можно импортировать функцию urlparse из модуля urlparse
from urlparse import urlparse тогда под именем urlparse в локальном пространстве имён появится уже не модуль, а функция и её можно вызвать так:
o = urlparse("http://www.mail.ru:8080/index.php?param=1¶m2=2")
Офлайн
Правильный вызов потому и оказался закоментированым , что сразу прводит к ошибке
#!/usr/bin/env pythonbash>python url.py
import sys
from urlparse import urlparse
Traceback (most recent call last):
File “urlparse.py”, line 4, in <module>
from urlparse import urlparse
File “/home/denis/programing/python/learn/ex/urlparse.py”, line 4, in <module>
from urlparse import urlparse
ImportError: cannot import name urlparse
Error in sys.excepthook:
Traceback (most recent call last):
File “/usr/lib/python2.5/site-packages/apport_python_hook.py”, line 38, in apport_excepthook
from apport.fileutils import likely_packaged
File “/usr/lib/python2.5/site-packages/apport/__init__.py”, line 1, in <module>
from apport.report import Report
File “/usr/lib/python2.5/site-packages/apport/report.py”, line 14, in <module>
import subprocess, tempfile, os.path, urllib, re, pwd, grp, os, sys
File “/usr/lib/python2.5/urllib.py”, line 30, in <module>
from urlparse import urljoin as basejoin
File “/home/denis/programing/python/learn/ex/urlparse.py”, line 4, in <module>
from urlparse import urlparse
ImportError: cannot import name urlparse
Original exception was:
Traceback (most recent call last):
File “urlparse.py”, line 4, in <module>
from urlparse import urlparse
File “/home/denis/programing/python/learn/ex/urlparse.py”, line 4, in <module>
from urlparse import urlparse
ImportError: cannot import name urlparse
Офлайн
При импорте - питон сначала пытается импортировать модуль из текущей папки, а потом уже из папок с библиотеками.
А в этой текущей папке лежет ваш скрипт urlparse.py - переименуйте его и все будет нормально.
Офлайн
Спасибо :) , всё работает
Офлайн