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