python - 从外部目录导入Python库

标签 python class import

我正在尝试导入已开发的Python文件。最初,当所有文件都位于同一目录中时,它们没有任何问题。但是,我决定将项目拆分到专用目录中。之后我就无法再导入文件了。

我的文件结构类似于以下内容:

dirFoo\
    mainFoo1.py
dirFoo\
    mainFoo2.py
dirFooCommon\
    commonFoo.py
    commonFoo2.py

最初,我试图更改 mainFoo1.py 的导入路径并执行以下操作: 从dirFooCommon导入commonFoo。然而,这种方法给了我以下错误: ModuleNotFoundError:没有名为“common”的模块。

除此之外,我尝试使用 imp.load_source ,它似乎有效。不幸的是,这会产生额外的问题。例如,如果某些 commonFoo.py 库必须包含其他库怎么办?在这种情况下,它们每个人都需要使用绝对项目路径,当我尝试在任何其他地方使用公共(public)库时,这将是一个问题。

您知道我应该做什么才能将我的公共(public)库包含到我的主要项目中吗?

最佳答案

您可以使用此文件夹结构来正确调用每个包和模块。

dirFoo\  <=== This is a package know 
    __init__.py 
    mainFoo1.py
dirFoo2\  <==== Change the name or you will have namespace issue
    __init__.py
    mainFoo2.py
dirFooCommon\ <=== This is a package know 
    __init__.py
    commonFoo.py
    commonFoo2.py

因此,在mainFoo1.py中,您可以像这样调用commonFoo.py

import sys
sys.path.append("/path/to/dirFooCommon")

from dirFooCommon import commonFoo

要替换 sys.path.append,您还可以在 PYTHONPATH 中添加该文件夹。

关于python - 从外部目录导入Python库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647569/

相关文章:

python - 导入语句适用于 PyCharm,但不适用于终端

python - 始终使用 netCDF4 生成屏蔽数组

python - 将行转换为 perl 或 python 中的列

android - 从另一个项目调用 Activity

C++类成员函数回调

python - 跨文件访问 Python 全局变量

Python蛮力算法

c++ - 为什么删除重载时需要使用声明

JAVA从外部库导入类

javascript - 导入、导出和存储数组的简单方法