【问题标题】:How can I test my python module without installing it如何在不安装的情况下测试我的 python 模块
【发布时间】:2011-08-06 09:00:34
【问题描述】:

我正在重新设计/重构我的 Python 量子化学包 (pyquante)。我不喜欢现有版本的一件事是我必须安装软件包才能运行测试套件。也就是说,测试套件有from PyQuante import SCF之类的语句,当然,这个PyQuante可以引用已安装的版本或本地版本。

我了解 virtualenv,并意识到这对我来说是一个选择。但我想知道是否还有其他合适的方法。过去,我曾因此类事情攻击过 sys.path,但更好的 Python 程序员告诉我,我永远不应该这样做。

有人对我如何做到这一点有任何建议吗?关键是我想在不安装代码的情况下测试当前版本的代码。

提前感谢任何能看穿我喋喋不休并提供建议的人!

【问题讨论】:

  • 我可以问一个解释,为什么你不应该“破解”sys.path
  • Afaik,使用 setupstools,您可以使用 develop 而不是 install 来安装指向您的开发项目的链接版本。因此无需重新安装。
  • @khackik 它可能导致事物不存在,并导致事物破裂。这主要是因为人们倾向于忘记他们对 sys.path 所做的事情并继续照常营业。如果你小心,这应该不是问题。

标签: python testing


【解决方案1】:

为你的东西创建一个合适的包并使用

python setup.py develop

使其成为适当的开发包。

见:

【讨论】:

    【解决方案2】:

    我会真诚地坚持使用 virtualenv,它的设计正是出于这个原因。非常小的开销,如果你搞砸了,只需删除目录。我相信随着你的成长,对于你目前的情况,事情不会像现在这样简单。以此为契机学习。

    【讨论】:

    【解决方案3】:

    在生产环境中大量更改sys.path 可能是不明智的。更改它以进行测试通常是可以的。

    如果您不想修改来自 sys 的变量,请使用名为 PYTHONPATH 的环境变量,这是一种干净且有文档记录的方式。

    【讨论】:

    • 程序启动时默认sys.path的第一项path[0]是包含用于调用Python解释器的脚本的目录。这意味着您只需将测试套件放在与它测试的模块相同的目录中,importing 即可。
    猜你喜欢
    • 2022-07-24
    • 2010-12-15
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2017-08-03
    • 2011-08-12
    相关资源
    最近更新 更多