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

时间:2009-03-30 11:12:51

标签: python

假设我在兄弟目录中有项目x和y:projects / x和projects / y。
myutils.py中的两个项目共有一些实用程序功能,mydbstuff.py中有一些数据库内容等。
这些都是次要的共同点,所以我不想为它们创建一个包。

有关此类文件的下落,PYTHONPATH可能的更改,正确的导入方式等问题。

使用此类文件的'pythonic方式'是什么?

5 个答案:

答案 0 :(得分:9)

pythonic方法是为它们创建一个额外的包。

为什么不想创建包?您可以使用这两个项目分发此包,效果将相同。

如果您通过使用PYTHONPATH和自定义导入进行修改,那么对于所有安装方案和平台,您永远不会这样做。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

http://docs.python.org/library/site.html
StackOVerflow question (see accepted solution)

答案 3 :(得分:0)

我同意'创建一个包'。

如果你不能这样做,那么如何在Linux上使用符号链接/联结(ln -s,在Windows上使用linkd)?

答案 4 :(得分:0)

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

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

我也听说过有关paver的好消息,但我自己并未使用过它。