模块导入路径

1 投票
5 回答
918 浏览
提问于 2025-04-15 16:15

我无法运行一个我想用的css解析器。

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)

..出现了一个错误:

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

目录结构 (/Users/nimbuz/Documents/python31):

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

print(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']

5 个回答

2

你在 cssparsercss 这两个文件夹里有 __init__.py 文件吗?这个文件的作用是把文件夹变成可以被当作包使用的。还有,css/parse.py 里有没有一个叫 parse 的函数或者类?当你运行 test.py 时,你的 sys.path 里有什么内容?当前的工作目录是什么?这些问题都很重要,但你没有回答任何一个,所以我们很难给出具体的帮助!-)

2

这是一个关于css-py的Python 3版本。

你可以在这里下载它:http://ifile.it/v32n70s/css.zip

4

这里有几个我刚测试过的步骤。

  • 说明文件上说需要使用Python 2.5,所以你需要安装Python 2.x系列的版本。

  • 我创建了一个文件夹 C:/TEST/

  • 我从 css-py的svn 下载了所有文件到 C:/TEST/,所以现在 C:/TEST/css/C:/TEST/uri/ 文件夹都存在了。

  • 我下载了 ply的tar gz文件,并且只把 ply 文件夹解压到 C:/TEST/css/,所以现在 C:/TEST/css/ply/ 文件夹也存在了。

  • 我在 C:/TEST/ 创建了一个名为 test.py 的文件,内容是:

    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']

希望这些对你有帮助。如果我的解释不太好,抱歉哦。

撰写回答