我有一大堆这样组织的剧本:
root
group1
script1.py
script2.py
group2
script1.py
script2.py
group3
script1.py
script2.py
utils
utils1.py
utils2.py
所有脚本*.py都使用utils文件夹中的函数。现在,我将utils路径附加到脚本,以便导入utils。
然而,这似乎是一个坏的做法(或“不是Python”)。此外,实际上这些组并没有这么简单,而且有比上面列出的更多的util文件夹。因此,附加路径解决方案变得越来越混乱。
我怎样才能以不同的方式组织这件事?
首先使所有目录可导入,即使用
__init__.py
。 然后有一个接受参数并基于此调用脚本的顶级脚本。从长远来看,基思所提到的distutils是正确的。否则这里有一个更简单(肯定不是最好的)的解决方案。
组织
调用
runscript.py
也许您的脚本可以有主函数,然后由runscript调用。 我建议您在顶层有一个脚本来导入脚本。
您可能还对以下内容感兴趣: Python 3: Good location(s) to install own and 3rd party packages?
是的,我可以看到包是如何帮助您的,但是如果您仍然在处理这些实用程序,并且在处理group1、group2等时对它们进行更改,那么进行安装会带来很大的开销
仍然在寻找好的答案。
我们不能从这个虚构的例子中真正知道您的用例是什么。我建议制作一个包含utils模块和其他脚本的包,然后使用脚本中的相对导入,例如
from ..utils import utils1
。当然,您不会将顶级包称为“根”,而是选择一个与项目名称类似的名称。如果您真的有很多这样的脚本,那么有一个单独的运行脚本,然后根据命令行参数导入模块可能是有意义的。然后像
runner.py <somecommand>
这样的东西将导入并执行<top package>.commands.somecommand.runFunction
(例如,Django这样做-使项目可扩展)。相关问题 更多 >
编程相关推荐