2009-11-22 2 views
1

Я не могу протестировать cssparser, который я бы хотел использовать.Путь импорта модуля

test.py:

from css.parse import parse 

data = """ 
    em { 
    padding: 2px; 
    margin: 1em; 
    border-width: medium; 
    border-style: dashed; 
    line-height: 2.4em; 
    } 
    p { color: red; font-size: 12pt } 
    p:first-letter { color: green; font-size: 200% } 
    p:first-line { color: blue }""" 


for rule in parse(data): 
    print (rule) 

..gives ошибки:

Traceback (most recent call last): 
  method <module> in test.py at line 1 
    from css.parse import parse 
  method <module> in test.py at line 6 
    from . import css, csslex, cssyacc 
  method <module> in test.py at line 8 
    from . import serialize 
  method <module> in test.py at line 6 
    from . import css 
ImportError: cannot import name css 

Структура каталогов (/ Пользователи/nimbuz/Документы/python31):

/Users/nimbuz/Documents/python31/**csspy**/ 
| 
+-- css/ (*has __init__.py*) 
| 
+-- uri/ (*has __init__.py*) 
| 
+-- test.py 

печати (sys.path) показывает:

['/Users/nimbuz/Documents/python31/csspy', '/Library/Frameworks/Python.framework/Versions/3.1/lib/python31.zip', '/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1', '/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/site-packages'] 
+0

Для других интересно, что это значит, вот оригинальный вопрос: http://stackoverflow.com/questions/1774453/module-import-error-using-idle –

ответ

4

Вот несколько шагов, которые я только что проверил.

  • readme говорит его питона 2.5, так что вам нужно Python 2.x серии

  • Я создал папку C:/TEST/

  • Я скачал все файлы из css-py svn в C:/TEST/, так и C:/TEST/css/C:/TEST/uri/ Папки существуют сейчас.

  • Я скачал ply's tar gz file и извлечь толькоply папки в C:/TEST/css/, так C:/TEST/css/ply/ папка существует в настоящее время.

  • Я создал test.py в C:/TEST/ с содержанием

    from css.parse import parse 
    print dir(parse) 
    
  • и я запускаю его, и результаты, как это, без ошибок импорта:

    C:\TEST>test.py

    ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']

Надеюсь, это поможет. извините, если мое объяснение плохое.

+0

Большое спасибо за пошаговое руководство. Но я сделал дополнительный шаг: конвертировал все файлы для 3.1, используя конвертер 2to3. Моя структура каталогов похожа, но все равно не повезло. – 3zzy

+1

А, это многое объясняет. См. Раздел A.10 в Dive Into Python 3: http://diveintopython3.org/porting-code-to-python-3-with-2to3.html и PEO 328: http://www.python.org/dev/ peps/pep-0328/ –

+0

er, это PEP не PEO выше. –

2

У вас есть __init__.py файлы в cssparser и css каталогов, чтобы превратить каталоги в пакеты? Есть ли файл css/parse.py с некоторой функцией или классом с именем parse? Что на вашем sys.path, и каков текущий каталог, когда вы выполняете test.py? Все эти вопросы могут быть важны, и вы не даете нам ответа никому из них, поэтому трудно оказать какую-либо помощь! -)

+0

sys.path:/Пользователи/nimbuz/Documents/Python3/cssparser – 3zzy

+0

Да, у него есть этот файл: all = ('csslex', 'cssyacc', 'css', 'serialize', 'parse') - Nimbuz 1 мин. назад – 3zzy

+0

Точно, какую ошибку импорта вы получаете? Что-то не так, если ваш 'sys.path' является просто'/Users/nimbuz/Documents/Python3/cssparser'. Там должен быть список каталогов. –

2

питон 3 версии CSS-р

http://ifile.it/v32n70s/css.zip

+0

Спасибо, но у него все еще есть множество ошибок. Похоже, в конце концов это не сработает. В любом случае, спасибо. – 3zzy

0

Не называйте свой собственный файл css.py. Назовите это чем-то другим, например css_test.py. Удалите также файл css.pyc.

+0

Пробовал, все тот же. – 3zzy