从子目录导入文件?
我有一个文件叫做 tester.py
,它在 /project
这个文件夹里。
/project
里面有一个子文件夹叫 lib
,里面有一个文件叫 BoxTime.py
:
/project/tester.py
/project/lib/BoxTime.py
我想从 tester
文件中导入 BoxTime
。我试过这样做:
import lib.BoxTime
结果是:
Traceback (most recent call last):
File "./tester.py", line 3, in <module>
import lib.BoxTime
ImportError: No module named lib.BoxTime
有没有什么办法可以从这个子文件夹导入 BoxTime
呢?
编辑
问题出在 __init__.py
文件上,但别忘了要把 BoxTime
作为 lib.BoxTime
来引用,或者使用:
import lib.BoxTime as BT
...
BT.bt_function()
13 个回答
106
你可以试着把它放到 sys.path
里:
sys.path.insert(0, './lib')
import BoxTime
224
- 创建一个名为
lib
的子目录。 - 在这个目录里创建一个空文件,名字叫
lib\__init__.py
。 在
lib\BoxTime.py
文件中,写一个函数foo()
,内容如下:def foo(): print "foo!"
在上面
lib
目录的客户端代码中,写:from lib import BoxTime BoxTime.foo()
运行你的客户端代码。你会得到:
foo!
很久以后——在Linux系统中,它会看起来像这样:
% cd ~/tmp
% mkdir lib
% touch lib/__init__.py
% cat > lib/BoxTime.py << EOF
heredoc> def foo():
heredoc> print "foo!"
heredoc> EOF
% tree lib
lib
├── BoxTime.py
└── __init__.py
0 directories, 2 files
% python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lib import BoxTime
>>> BoxTime.foo()
foo!
697