从子目录导入文件?

2024-04-25 05:51:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为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()

Tags: 文件pyimportprojectmostlibcallfile
3条回答

您可以尝试将其插入sys.path

sys.path.insert(0, './lib')
import BoxTime
  • 创建名为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!

在这里查看包文档(第6.4节):http://docs.python.org/tutorial/modules.html

简而言之,您需要放置一个名为

__init__.py

在“lib”目录中。

相关问题 更多 >