在多个项目中共享公共文件的Python方式是什么?

在多个项目中共享公共文件的Python方式是什么?,python,Python,假设我在兄弟目录中有项目x和y:projects/x和projects/y. myutils.py中的两个项目和mydbstuff.py中的一些数据库内容都有一些公用函数。 这些都是次要的普通商品,所以我不想为它们创建一个单独的包 关于这些文件的下落、PYTHONPATH的可能更改、导入的正确方式等问题会出现 使用这些文件的“pythonic方式”是什么 python的方法是为他们创建一个额外的包 为什么不创建一个包呢?您可以将此包与两个项目一起分发,效果相同 如果您通过破坏PYTHONPATH

假设我在兄弟目录中有项目x和y:projects/x和projects/y.
myutils.py中的两个项目和mydbstuff.py中的一些数据库内容都有一些公用函数。
这些都是次要的普通商品,所以我不想为它们创建一个单独的包

关于这些文件的下落、PYTHONPATH的可能更改、导入的正确方式等问题会出现


使用这些文件的“pythonic方式”是什么

python的方法是为他们创建一个额外的包

为什么不创建一个包呢?您可以将此包与两个项目一起分发,效果相同

如果您通过破坏PYTHONPATH和自定义导入来完成安装,您将永远无法在所有安装场景和平台上正确完成安装


只需创建另一个包,即可立即完成。

您可以直接通过
sys.path.append(pathToShared)
或通过定义
.pth
文件将共享文件的路径添加到中,并将其添加到中。路径文件(
.pth
)是简单的文本文件,每行都有一个路径。

您还可以创建一个
.pth
文件,该文件将存储要添加到PYTHONPATH的目录
.pth
文件被复制到
Python/lib/site packages
目录,该文件中的任何目录都将在运行时添加到PYTHONPATH中



我同意“创建一个包”

如果您不能这样做,那么使用符号链接/连接(
ln-s
在Linux上,而
linkd
在Windows上)怎么样?

我建议使用它。它允许您设置依赖项,以便在安装软件包之前确保所有这些软件包/单个模块都位于sys.path上。如果您想安装的只是一个源文件,它支持自动生成一个简单的setup.py。如果您决定不走包路线,这可能很有用

如果您计划在多台计算机上部署此功能,我通常会设置一个包含我计划使用的所有依赖项的Web服务器,以便它可以自动为您安装这些依赖项


我也听说过一些好东西,但我自己没有使用过。

+1:避免动态修改sys.path;使用包或外部PYTHONPATH设置。