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
MrVito
V2EX  ›  Python

时隔几个月我又来问 Python import 的问题了

  •  1
     
  •   MrVito · 2018-03-02 21:45:47 +08:00 · 2853 次点击
    这是一个创建于 2488 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简单描述一下我的疑惑,因为一个项目有很多目录,所以要先用 sys.path.append("..")将路径添加到 python 的搜索路径中,例如:

    import sys
    sys.path.append("..")
    from dir1 import my_modules
    

    于是乎就出现了如下警告:

    module level import not at top of file

    虽然不影响,但是我实在是想不通,这样的警告应该如何避免?我必须要先将自己项目的路径添加进去,才能 import 自己的 module,这使我不得不将 import sys 放在最前面。
    难道是我对这个报错有什么误解?还是说有什么其他的 module 导入的方法可以避免这个警告吗?

    3 条回复    2018-03-05 09:19:59 +08:00
    Tony042
        1
    Tony042  
       2018-03-02 21:54:04 +08:00   ❤️ 1
    我觉得首先目录没规划好吧,module 的目录应该在子目录里面,放在上层感觉架构有问题。如果真的每个文件都用这个 module 的话,可以把这个 module 单独做成一个库
    aijam
        2
    aijam  
       2018-03-03 13:41:12 +08:00
    把修改 sys.path 的两行放到一个另文件里,你的文件里再调用这个文件就可以
    cfwyy
        3
    cfwyy  
       2018-03-05 09:19:59 +08:00
    本人新手,那个 import 不是支持相对导入的吗?不能直接
    from .. package import module 吗?
    为啥还要把 .. 加到 path 里去,感觉没这个必要啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2861 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:41 · PVG 22:41 · LAX 06:41 · JFK 09:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.