Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2008 16:38:25

sisqo
От:
Зарегистрирован: 2008-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

Даже не знаю как точнее сормулировать проблему , буквально несколько дней как начал изучать Питон и конечно много не понятного и “мистических” ошибок , вот одна из таких

#!/usr/bin/env python

import sys
import urlparse
#from urlparse import urlparse

o = urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")
bash>python url.py
./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&param2=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&param2=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&param2=2")
TypeError: ‘module’ object is not callable
Проверил в системе есть модуль urlparse
locate urlparse.py
/usr/lib/python2.4/urlparse.py
/usr/lib/python2.5/urlparse.py
Также эти пути находятся в переменных окружения Питона
>>>sys.path
Так в чёмже может быть проблема ?



Офлайн

#2 Май 20, 2008 16:49:14

vigorouz
От:
Зарегистрирован: 2008-05-19
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

Просто у Вас закоментирован правильный импорт :-)
from urlparse import urlparse
o = urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")



Офлайн

#3 Май 20, 2008 16:56:59

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

или так:

import urlparse
o = urlparse.urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")

В общем сами решайте как вам удобнее…



Офлайн

#4 Май 20, 2008 17:00:47

vigorouz
От:
Зарегистрирован: 2008-05-19
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

Чуть подобнее:
import urlparse
модуль urlparse появляется в локальном пространстве имён и именно его Вы пытались вызвать как функцию, получая соотв. исключение (TypeError: ‘module’ object is not callable). Можно вызвать функцию urlparse из этого модуля так:
o = urlparse.urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")
а можно импортировать функцию urlparse из модуля urlparse
from urlparse import urlparse тогда под именем urlparse в локальном пространстве имён появится уже не модуль, а функция и её можно вызвать так:
o = urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")



Офлайн

#5 Май 20, 2008 17:09:05

sisqo
От:
Зарегистрирован: 2008-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

Правильный вызов потому и оказался закоментированым , что сразу прводит к ошибке

#!/usr/bin/env python

import sys
from urlparse import urlparse
bash>python url.py
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



Офлайн

#6 Май 20, 2008 17:24:28

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

При импорте - питон сначала пытается импортировать модуль из текущей папки, а потом уже из папок с библиотеками.
А в этой текущей папке лежет ваш скрипт urlparse.py - переименуйте его и все будет нормально.



Офлайн

#7 Май 20, 2008 18:02:43

sisqo
От:
Зарегистрирован: 2008-05-20
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

import modules

Спасибо :) , всё работает



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version