如何在python项目之间共享代码?

use*_*309 9 shared-libraries python-3.x

假设我有两个具有以下结构的项目:

/项目1
/项目2

现在我开发了一个对这两个项目都有用的函数/类。我想把它放在 project1/project2 目录之外的某个地方,并将它作为一个单独的项目进行维护。所以我可能需要这样的结构:

/项目1
/项目2
/共享

如果我将辅助函数/类放在共享文件夹中的项目中,如何从 project1/project2 使用它们?

目前我的选择是在 project1/project2 中使用 sys.path.append('/shared') ,然后从共享文件夹导入。

有没有更多的pythonic方法来做同样的事情?

小智 6

您可以使用父模块导入 /shared,只要父模块在 PYTHONPATH 中。如果您的项目如下所示:

toplevel_package/
??? __init__.py
??? main.py
??? project1
    ??? __init__.py
    ??? foo.py
??? project2
    ??? __init__.py
    ??? bar.py
??? shared
    ??? __init__.py
    ??? save_files.py
Run Code Online (Sandbox Code Playgroud)

然后导入看起来像:

from toplevel_package.shared import save_files
Run Code Online (Sandbox Code Playgroud)

只要 toplevel_package 在您的 PYTHONPATH 中,这就会起作用。任何一个:

  1. 只启动 toplevel_package 脚本(然后可以调用子包)
  2. 将 toplevel_package 模块移动到 PYTHONPATH 中列出的任何文件夹
  3. 将 toplevel_package 添加到 PYTHONPATH

更多信息可以在import from parent 中找到。

您也可以简单地使用完整路径导入,在我看来这不像Pythonic,但在某些情况下效果很好(最后, .

  • 非常感谢您的解释。我现在正在按照您的建议使用 PYTHONPATH 和目录结构,并且一切正常。谢谢 (2认同)