在Python中,如何高效管理脚本文件间的引用?
我有很多Python脚本,这些脚本里有一些可以重复使用的代码,其他的Python脚本会用到这些代码。不过,这些脚本分散在不同的文件夹里,所以我觉得每次在顶层脚本里都要加很多次sys.path.append的调用有点麻烦。我希望能直接写'import'语句,而不需要在同一个脚本里添加额外的文件引用。
现在,我的代码是这样的:
import sys
sys.path.append('..//shared1//reusable_foo')
import Foo
sys.path.append('..//shared2//reusable_bar')
import Bar
我希望能变成这样:
import Foo
import Bar
我的背景主要是在.NET平台,所以我习惯使用一些元文件,比如*.csproj、*.vbproj、*.sln等,来管理和包含实际的文件路径引用,这些引用是在源文件之外的。这样我就可以只写'using'指令(相当于Python的import),而不需要暴露所有的引用,同时也能在多个脚本中重复使用这些路径引用。
那么,Python有没有类似的支持呢?如果没有,有哪些技巧和方法可以解决这个问题?
6 个回答
最简单的方法就是设置(或者添加到)PYTHONPATH,然后把你的模块和包放到PYTHONPATH里包含的路径中,或者创建一个指向它们的链接。
如果你的可重用文件已经打包好(也就是说,它们里面有一个叫做 __init__.py
的文件),并且这个包的路径在你的 PYTHONPATH 或 sys.path 里面,那么你应该可以直接这样做:
import Foo
这个问题提供了一些更多的细节。
(注意:正如 Jim 所说,你也可以把你的可重用代码放到 site-packages
目录里。)
简单来说,就是把你可以重复使用的代码放到你电脑上的site-packages目录里,这个目录在你的sys.path里面。
你还可以通过在你的路径里添加.pth文件来扩展搜索路径。想了解更多细节,可以查看这个链接:https://docs.python.org/2/install/#modifying-python-s-search-path
哦,对了,python 2.6和3.0版本增加了对PEP370的支持,具体可以看看这个链接:Per-user site-packages Directory