再开一帖,新手关于 absolute import 的问题

2015-11-24 17:17:06 +08:00
 shotego
我尝试定义一个 package
package/
__init__.py
a.py
b.py

a.py:
def print_a(a):
print a

b.py:
from package import a
a.print_a(2)

我用的 ide 是 PyCharm ,package 的路径是 G:\PythonDemo\package ,我直接 Ctrl+Shift+F10 运行 b.py
然后报错来了: no module named package

我用 cmd 运行 G:\PythonDemo>python -m package.b 又可以正常运行!
这是什么原理?什么结构啊?
2356 次点击
所在节点    Python
4 条回复
shotego
2015-11-24 17:19:10 +08:00
脑子比较笨,被这个问题搞晕一下午了。求指点迷津
pkking
2015-11-24 17:49:58 +08:00
sys.path 不一样吧 这两种方式
shotego
2015-11-24 18:07:30 +08:00
@pkking 求详解。我 cmd 执行 G:\PythonDemo\package>python b.py 确实会出现 no module named package ,但是 G:\PythonDemo>python -m package.b 却成功。求解我该怎么做?
ratazzi
2015-11-24 18:32:00 +08:00
python -m xxx 会把 pwd 加入 sys.path
python /path/to/xxx/xx.py 会把 /path/to/xxx 加入 sys.path

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

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

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

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

© 2021 V2EX