基本的Python导入问题

5 投票
2 回答
1008 浏览
提问于 2025-04-16 10:27

如果我有一个像这样的src目录:

main.py
pkg1:
    __init__.py
    util.py
pkg2:
    __init__.py
    test.py

你能告诉我从main.pytest.py中导入pkg1.util的最佳方法吗?

谢谢!(如果我需要在根目录下再放一个__init__.py文件,请告诉我?)

2 个回答

1

来自 main.py 的内容:

import pkg1.util

来自 test.py 的内容:

from ..pkg1 import util
5

既然你提到这是Python 3,你就不需要在你的.py文件中添加以下内容。不过我还是建议加上,因为这样可以让你的代码在Python 2上也能用,万一有谁还在用Python 2的话:

from __future__ import absolute_import

如果你使用的是Python 3,或者你在使用Python 2并且已经加上了上面的那行代码,下面就是你的答案:

main.py文件来看:

import pkg1.util as util

test.py文件中,你可以根据pkg1pkg2的关系选择两种方式之一。如果你认为这两个包总是一起部署的,那你就可以这样做:

from ..pkg1 import util

如果是第二种情况,也就是这两个包是半独立的,那你就可以这样做:

import pkg1.util as util

这当然意味着,你总是要在main.py所在的目录下运行Python,或者那个目录要在PYTHONPATH中,或者因为某些原因(比如它是主要的Python库目录)出现在sys.path中。

撰写回答