V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
reloop
V2EX  ›  Python

请教笨办法 48 和 49 题 import error 与 __init__.py 文件 的问题

  •  
  •   reloop · 2013-11-24 03:18:56 +08:00 · 3813 次点击
    这是一个创建于 4019 天前的主题,其中的信息可能已经有所发展或是发生改变。
    教程的写法只有一句
    from ex48 import lexicon

    但根据他说的骨架 , lexicon 这个类应该从 ex48.ex48.ex48 这里导入才对
    为什么他可以那样写?
    而且 , 最整我的是即使我写 from ex48.ex48.ex48 import lexicon 也会出现 ImportError
    为了方便 , 下面说成 ex48.project.main

    因为 ex48 这个目录的父目录是 PYTHONPATH 环境变量中指定的
    所以我以为 ex48.project.main 就一定能导入 main.py 里边的东西
    但试了千百次还是 ImportError 一次又一次的

    后来我发现只要在 project 这个目录下创建 __init__.py 空文件就能 import 成功

    因为教材的写法很简单 , 而且他在说创建骨架的时候 , 没有说要在项目文件夹 (skeleton | ex48) 下创建一个 __init__.py , 所以我有点怀疑我的解决方法是正确的吗?

    下面是书里说的项目骨架结构
    root
    skeleton
    setup.py
    __init__.py # 加上这个文件才能正常导入模块
    bin
    docs
    NAME
    __init__.py
    tests
    __init__.py
    NAME_tests.py
    3 条回复    1970-01-01 08:00:00 +08:00
    reloop
        1
    reloop  
    OP
       2013-11-24 04:16:51 +08:00
    root
    ----skeleton
    --------setup.py
    --------__init__.py # 加上这个文件才能正常导入模块
    --------bin
    --------docs
    --------NAME
    ------------__init__.py
    --------tests
    ------------__init__.py
    ------------NAME_tests.py
    muzuiget
        2
    muzuiget  
       2013-11-24 09:47:02 +08:00   ❤️ 1
    楼主基础姿势不扎实,因为 Python 就是当发现一个目录下有 __init__.py 文件,才当成一个模块目录,才能 import 呀。
    reloop
        3
    reloop  
    OP
       2013-11-24 12:34:30 +08:00
    @muzuiget 谢谢! 只有这个方法吗? 有点不方便啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5166 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.