Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2012 21:13:50

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

import и регистр

>>> import lxml.HTML
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named HTML
lxml\__init__.py
# this is a package
Почему не получается? Windows, питон 2 и 3.

Офлайн

#2 Ноя. 6, 2012 21:17:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

import и регистр

import lxml.html

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

ElementInclude.py
ElementInclude.pyc
ElementInclude.pyo
__init__.py
__init__.pyc
__init__.pyo
_elementpath.py
_elementpath.pyc
_elementpath.pyo
builder.py
builder.pyc
builder.pyo
cssselect.py
cssselect.pyc
cssselect.pyo
doctestcompare.py
doctestcompare.pyc
doctestcompare.pyo
etree.pyd
html
includes
isoschematron
lxml.etree.h
lxml.etree_api.h
objectify.pyd
pyclasslookup.py
pyclasslookup.pyc
pyclasslookup.pyo
sax.py
sax.pyc
sax.pyo
usedoctest.py
usedoctest.pyc
usedoctest.pyo



Отредактировано doza_and (Ноя. 6, 2012 21:20:35)

Офлайн

#3 Ноя. 6, 2012 21:18:29

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

import и регистр

Да, но файловая система на винде - независимая, и HTML и html - один и тот же каталог. Читал, что для этого в __init__ надо заполнять __all__, но тут этого нет.

Офлайн

#4 Ноя. 6, 2012 21:23:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

import и регистр

А как ваш код потом под UNIX переносить если будет каша? __all__ для порядка конечно следовало заполнить.

На самом деле в виндах регистр тоже хранится

> ls
Aa.py
B.py
B.pyc
тут проходит import B
и не проходит import b

В WIN невозможно создать два файла которые отличаются только регистром в одной директории.



Отредактировано doza_and (Ноя. 6, 2012 21:29:58)

Офлайн

#5 Ноя. 6, 2012 21:32:32

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

import и регистр

Я понимаю, просто я в книжке прочел, что без __all__ это будет возможно - а вот нет.

Если выводить список - то хранится, если искать HTML, то винда должна будет и его найти.

Офлайн

#6 Ноя. 6, 2012 21:42:07

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

import и регистр

odnochlen
винда должна будет и его найти

По поводу искать тут вообще забавно:
import glob
for i in glob.glob("B.py"):
   print i,"b.py" ==i
for i in glob.glob("b.py"):
   print i,"b.py" ==i
>>> 
B.py False
b.py True

glob пытается ЛОГИЧНО подстроится под нелогичное устройство WIN Для винды давно уже пора отменить независимость от регистра. После этого конечно все сильно вздрогнут, но потом будет логично :)



Отредактировано doza_and (Ноя. 6, 2012 21:42:39)

Офлайн

#7 Ноя. 6, 2012 21:44:42

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

import и регистр

Под “искать” я имел в виду open(), и он таки регистронезависим.

doza_and
Для винды давно уже пора отменить независимость от регистра.
Для питона тоже пора много че отменить, но никто это делать не будет. И из x86 все легаси гавно повырезать, из-за которого он так греется.

Дык, вернемся к вопросу в ТС посте.

Отредактировано odnochlen (Ноя. 6, 2012 21:47:18)

Офлайн

#8 Ноя. 7, 2012 07:23:34

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

import и регистр

open(), и он таки регистронезависим.
Ну регистронезависимость в пуях к файлам зависит от ОС, и это уже не волнует интерпритатор правильно\неправильно путь указан, заранее он этого не проверит, а в остальных случаях там четко прописан список модулей за которые не прыгнешь.



Офлайн

#9 Ноя. 7, 2012 11:09:12

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

import и регистр

Так а ГДЕ прописан этот список, если не в __init__.py?

Офлайн

#10 Ноя. 8, 2012 17:42:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

import и регистр

Питон использует регистрозависимый импорт, даже на Windows. Это сделано специально и осознанно. Код здесь: http://hg.python.org/cpython/file/f068c3e7743d/Python/import.c#l1620

Фича отключается установкой Environment Variable PYTHONCASEOK



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version