假设我在兄弟目录中有项目x和y:projects / x和projects / y。
myutils.py中的两个项目共有一些实用程序功能,mydbstuff.py中有一些数据库内容等。
这些都是次要的共同点,所以我不想为它们创建一个包。
有关此类文件的下落,PYTHONPATH可能的更改,正确的导入方式等问题。
使用此类文件的'pythonic方式'是什么?
答案 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的好消息,但我自己并未使用过它。