python import 如何引入当前目录的.py文件?

如图,我想用python 运行a.py 然后引入b.py 打印b.py 中的test1

clipboard.png

运行文件python a.py

from . import b
print test1

b.py代码

test1=u'ssssssaaaawwwww;;llllll'

报错

clipboard.png

或者想引入当前目录下的c.py也一样报错.请问大神哪里写错了,应该怎么写才对?

a.py代码:

from .dir import c
print test2

c.py代码:

test2=u'ssssssaaaawwwww;;llllll'
阅读 93.9k
10 个回答

因为你是直接执行a.py, a.py是__main__, 这时b与a就不是同级关系了, 所以from . import b 就报错了.
详细python import机制请看https://neo1218.github.io/pyt...

from b import test1
or
import b

from dir import c
or
from dir.c import test2

相对路径导入模块或者包只能在一个里面才可以。

如果不是在包里面导入模块或者包,直接写模块名或者是包名就可以了

from dir import c

同级目录引用直接improt 文件名就可以啊!即import b

给提主说一下模块怎么导入吧
整个模块导入,在一个路径下用import b就可以了,不需要from . import b
from ... import ...是导入模块内的一部分,例如from b import test1,那么只导入b.py这个模块下的test1,如果模块里还有test2,test3什么的,就不导入了

看报错有可能是不允许import变量值?通常导入的是类或者函数。

dir下__init__.py

import a,b 即可

from . import 模块,这种写法是正确的,但是要分使用场合,只能用于导入执行,不能直接运行。

如果sys.path里没有加载当前目录,from . import module 是不行的。

PS1:在Python2的时候,为了实现同一个包内模块的相互引用,使用import foo或者from foo import Bar,Python2解释器会先在当前目录里搜索foo.py,然后再去Python搜索路径(sys.path)里搜索。
PS2: python3会有所不同,默认从sys.path里搜索。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏