【发布时间】:2019-07-04 10:38:50
【问题描述】:
文件夹结构
lib/
abcd/
__init.py__
lib.py
app.py
代码
from lib.abcd import lib
有效。但是有了这个文件结构:
bin/
app.py
lib/
abcd/
__init.py__
lib.py
代码
from ..lib.abcd import lib
出现导入错误。
当库位于当前文件夹的同级文件夹中时如何正确执行import?(或同级文件夹的子文件夹)
我知道可能会有一些涉及将 lib/ 添加到 PATH 的技巧,但是有没有优雅的 Pythonic 解决方案?
如果没有,是否有真正的内部原因阻止用户以简单的方式进行这种简单的导入?
【问题讨论】:
-
通常你不能。因为您的顶级目录是
bin。要实现它,您需要将父目录添加到sys.path。然后将其导入为from lib.abcd import lib。 -
感谢您的评论@Sraw。没有更简单的解决方案吗?
-
肯定有...将
lib移至bin。我了解您的项目结构。如果你想坚持,我建议你添加一个 bash 脚本来启动。在该脚本中,您可以使用PYTHONPATH=your_parent_directory python app.py启动您的应用程序。 -
只是为了澄清,基于代码和这些 cmets:这里没有父文件夹吗?这是您项目的完整文件夹结构吗?
-
恕我直言,您做错了。您应该区分源代码的布局和已安装软件的布局。当您安装软件时,
lib将安装在 python 解释器的站点包中,您可以将app.py放在标准的bin目录中,它将始终独立于它所在的位置工作。在开发过程中,您只需将根目录标记为源根目录即可完成,或者您使用 virtualenv 在其中执行pip install -e
标签: python import directory python-import