【问题标题】:How to share code between python projects?如何在 python 项目之间共享代码?
【发布时间】:2018-02-23 19:24:26
【问题描述】:

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

/project1
/项目2

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

/project1
/项目2
/共享

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

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

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

【问题讨论】:

  • 你为什么不创建一个库?
  • 假设我在共享文件夹中有一个 MyModule,其中有一个类 MyClass 定义: /project1 /project2 /shared/MyModule(MyClass) 如何在 Project1/Project2 文件夹中创建 MyClass 的子类?

标签: python-3.x shared-libraries


【解决方案1】:

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

toplevel_package/
├── __init__.py
├── main.py
└── project1
    ├── __init__.py
    └── foo.py
└── project2
    ├── __init__.py
    └── bar.py
└── shared
    ├── __init__.py
    └── save_files.py

然后导入看起来像:

from toplevel_package.shared import save_files

只要 toplevel_package 在您的 PYTHONPATH 中,它就可以工作。要么:

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

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

你也可以简单地使用import using full path,在我看来它不像pythonic,但在某些情况下效果很好(最后,.

【讨论】:

  • 非常感谢您的解释。我现在按照您的建议使用 PYTHONPATH 和目录结构,并且一切正常。谢谢
猜你喜欢
  • 2014-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 2023-03-29
相关资源
最近更新 更多