基本的Python导入问题
如果我有一个像这样的src目录:
main.py
pkg1:
__init__.py
util.py
pkg2:
__init__.py
test.py
你能告诉我从main.py
和test.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
文件中,你可以根据pkg1
和pkg2
的关系选择两种方式之一。如果你认为这两个包总是一起部署的,那你就可以这样做:
from ..pkg1 import util
如果是第二种情况,也就是这两个包是半独立的,那你就可以这样做:
import pkg1.util as util
这当然意味着,你总是要在main.py
所在的目录下运行Python,或者那个目录要在PYTHONPATH
中,或者因为某些原因(比如它是主要的Python库目录)出现在sys.path
中。