2016-12-30 80 views
0

我制作了一个自定义python模块(说awesome-lib.py),这个模块将被多个其他python模块(module1.pymodule2.py等)导入和使用。问题是所有模块都需要放在不同的文件夹中,每个模块都应该有一个awesome-lib.py的副本供他们导入。我想到了这样做的两种选择:分别在多个模块中包含一个自定义python模块

  1. 每个模块文件夹都会有一个awesome-lib.py的副本。这样我可以import awesome-lib并在每个模块中使用它。但问题是我必须在awesome-lib.py中进行任何更改。我将不得不单独复制每个模块文件夹中的文件,因此这可能不是一个好方法。
  2. 我可以使用distutils打包awesome-lib.py。无论何时在模块中进行更改,我都会使用一些脚本更新每个模块中的awesome-lib.py。但仍然我希望awesome-lib发行包分别包含在每个模块文件夹中。

任何人都可以请告诉我一个有效的方法来实现这一目标吗?这样我就可以轻松地更改一个文件,并且这些更改将分别反映在所有模块中。

P.S:我想分别在每个模块文件夹中分别输入awesome-lib.py,因为我需要压缩它的内容并将每个模块作为Lambda zip包上载到AWS Lambda。

+1

如果感觉你做错了,你可能会做错了。 –

+0

是的,所以任何解决它? :) – Sibtain

+2

我对AWS没有太多了解,但是我会质疑一个系统的设计,它会将您的模块的副本分别放在每个文件夹中。这就是你做错了事。应该有一些方法可以集中安装'awesome-lib.py',并让每个模块使用它,或者在'awesome-lib.py'中表示'module1.py'等的依赖关系,并且有一个依赖关系解析系统照顾它。 –

回答

0

只让awesome-lib.py的一个副本放置在放置位置并将其路径附加到其他模块中。让样品路径是“/home/user/awesome-lib.py”

添加下面的所有其他模块的代码要导入awesome-lib.py

​​

注:路径真棒lib可能会有所不同你的选择

+0

这在技术上是有效的,但除了一次性脚本之外,这是一个糟糕的主意,因为一旦你移动了任何涉及到另一台计算机的文件,或更改目录结构,一切都会中断。 –

+0

为什么要改变目录结构?只需让你的模块在你想要的地方,然后简单地追加它的路径..上面的例子只显示了如何做到这一点。 –

+0

问题出在当模块打包为zip,它需要在zip包中有一个单独的库。如果没有,并且我在AWS Lambda上进行了上传,那么AWS Lambda上将无法识别该路径 – Sibtain