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

2017-09-24 01:35:35 +08:00
 MrVito

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

我的目录是这样的

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

3445 次点击
所在节点    Python
12 条回复
Trim21
2017-09-24 01:39:53 +08:00
你可以用
python -m test.test 的方法运行 test.py,就能正确运行了...
g972282
2017-09-24 01:49:52 +08:00
应该是 "__init__.py" 文件,不是 "init.py"
Trim21
2017-09-24 03:00:24 +08:00
@g972282 应该是楼主没有```包起来,然后__init__被转义成斜体的 init 了..
boboliu
2017-09-24 03:17:18 +08:00
请 import common
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
2017-09-24 10:33:14 +08:00
在 LogAnalysis 为当前工作目录的时候`python test/test.py`
zhusimaji
2017-09-24 14:31:32 +08:00
包的定义问题😂
wcsjtu
2017-09-25 12:06:35 +08:00
使用 absolute import. 而且, 没有__init__.py ,是不会构成一个 package 的
from common import log_factory

lz 还是仔细研究下 python 的 import 机制吧
MrVito
2017-09-25 15:00:28 +08:00
@g972282 被转义了……我忘记预览了……
MrVito
2017-09-25 15:01:12 +08:00
@boboliu import common 是没问题的,但是里面的函数 类都用不了……
MrVito
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
2017-09-25 15:11:30 +08:00
@Trim21 竟然真的可以……虽然不知道为什么可以……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/393142

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX