0

我制作了一个 Python 模块 (https://github.com/Yannbane/Tick.py) 和一个 Python 程序 (https://github.com/Yannbane/Flatland.py)。程序导入模块,没有它,它就无法工作。我打算让人们在运行程序之前下载这两个文件,但是,我有点担心。

在程序中,我添加了以下几行:

sys.path.append("/home/bane/Tick.py")
import tick

"/home/bane/Tick.py"是我需要包含的模块的本地仓库的路径,但这显然与其他人不同!我怎样才能更好地解决这种情况?

4

2 回答 2

3

@Lattyware 的建议是一个可行的选择。但是,将核心依赖项与主程序绑定并不少见(例如,Django 和 PyDev 就是这样做的)。这很好用,尤其是在针对特定版本的库调整主代码时。

为了避免 Lattyware 在代码维护方面提到的麻烦,您应该研究一下 git submodules,它恰好允许这种布局,保持代码版本控制的健全。

从您的目录结构看来,这两个文件都位于同一个目录中。这可能比它们可能是同一个的两个模块更能说明问题。在这种情况下,您应该简单地添加一个名为该目录的空文件__init__.py,然后您的导入可以通过以下方式工作:

import bane.tick

或者

from bane import tick

哦,是的......你应该使用小写的模块名称(如果你要在 python 中编码,值得深入了解PEP8 !:)

于 2012-05-10T10:58:26.067 回答
2

您可能想尝试将您的模块提交到Python 包索引,这样人们就可以轻松地将它 ( pip tick) 安装到他们的路径中,并且您可以直接导入它而无需将其添加到 python 路径中。

否则,我建议简单地告诉人们也下载该模块,并将其放在程序的子目录中。如果您真的觉得这太费力了,您可以将模块的副本放入程序的存储库中(当然,这意味着确保您保持两个版本都是最新的,这有点痛苦,尽管我想可能只使用符号链接)。

还值得注意的是,您的 repo 名称有点误导,大写通常很重要,因此您可能希望调用 repotick.py以匹配模块和 python 命名约定。

于 2012-05-10T10:26:46.797 回答