从子目录导入文件?
我有一个文件叫做 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