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

关于 import 自己写的文件的问题

  •  1
     
  •   MrVito · 2017-09-24 01:35:35 +08:00 · 3425 次点击
    这是一个创建于 2379 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教一下关于 import 自己的文件的问题

    我的目录是这样的

    我希望在 test.py 文件中 import common 中的 log_factory 中的 Log 类,但是在 linux 中执行后发现会报错,提示我 No module named log_factory,不知道是哪里写的有问题……

    12 条回复    2017-09-25 15:11:30 +08:00
    Trim21
        1
    Trim21  
       2017-09-24 01:39:53 +08:00
    你可以用
    python -m test.test 的方法运行 test.py,就能正确运行了...
    g972282
        2
    g972282  
       2017-09-24 01:49:52 +08:00 via Android
    应该是 "__init__.py" 文件,不是 "init.py"
    Trim21
        3
    Trim21  
       2017-09-24 03:00:24 +08:00
    @g972282 应该是楼主没有```包起来,然后__init__被转义成斜体的 init 了..
    boboliu
        4
    boboliu  
       2017-09-24 03:17:18 +08:00
    请 import common
    scriptB0y
        5
    scriptB0y  
       2017-09-24 10:14:26 +08:00
    python import 的问题隔一段时间就会有人提出来:

    https://www.google.com.hk/search?q=site:v2ex.com/t%20import&gws_rd=cr,ssl
    quinoa42
        6
    quinoa42  
       2017-09-24 10:33:14 +08:00
    在 LogAnalysis 为当前工作目录的时候`python test/test.py`
    zhusimaji
        7
    zhusimaji  
       2017-09-24 14:31:32 +08:00 via iPhone
    包的定义问题😂
    wcsjtu
        8
    wcsjtu  
       2017-09-25 12:06:35 +08:00
    使用 absolute import. 而且, 没有__init__.py ,是不会构成一个 package 的
    from common import log_factory

    lz 还是仔细研究下 python 的 import 机制吧
    MrVito
        9
    MrVito  
    OP
       2017-09-25 15:00:28 +08:00
    @g972282 被转义了……我忘记预览了……
    MrVito
        10
    MrVito  
    OP
       2017-09-25 15:01:12 +08:00
    @boboliu import common 是没问题的,但是里面的函数 类都用不了……
    MrVito
        11
    MrVito  
    OP
       2017-09-25 15:10:57 +08:00
    @wcsjtu 有__init__.py 的,发主题的时候被转义了……如果我在 import 的前面先 sys.path.append(../common),是可以正常 import 的,但是如果我在 test 目录下 sys.path.append(..)到 LogAnalysis 目录下,就不能 import common 里面的 module 了
    MrVito
        12
    MrVito  
    OP
       2017-09-25 15:11:30 +08:00
    @Trim21 竟然真的可以……虽然不知道为什么可以……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   919 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:09 · PVG 06:09 · LAX 15:09 · JFK 18:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.