Найти - Пользователи
Полная версия: import modules
Начало » Python для новичков » import modules
1
sisqo
Даже не знаю как точнее сормулировать проблему , буквально несколько дней как начал изучать Питон и конечно много не понятного и “мистических” ошибок , вот одна из таких
#!/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
Так в чёмже может быть проблема ?
vigorouz
Просто у Вас закоментирован правильный импорт :-)
from urlparse import urlparse
o = urlparse("http://www.mail.ru:8080/index.php?param=1&param2=2")
poltergeist
или так:

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

В общем сами решайте как вам удобнее…
vigorouz
Чуть подобнее:
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")
sisqo
Правильный вызов потому и оказался закоментированым , что сразу прводит к ошибке
#!/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
shiza
При импорте - питон сначала пытается импортировать модуль из текущей папки, а потом уже из папок с библиотеками.
А в этой текущей папке лежет ваш скрипт urlparse.py - переименуйте его и все будет нормально.
sisqo
Спасибо :) , всё работает
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB