在开发中测试Python控制台脚本

时间:2012-09-23 21:41:53

标签: python testing

我正在开发一个带有一些控制台脚本的Python包。由于包的布局方式(参见下面的例子),控制台脚本看不到他们试图导入的包。

这是一个示例布局:

- my_package
    bin/some_script.py
    my_package/
      __init__.py
      a_module.py

我应该如何构建软件包,以便在处理Python软件包的内容时可以在“bin”中测试控制台脚本?

3 个答案:

答案 0 :(得分:1)

这是一个小技巧。

python < bin/some_script.py

bin/some_script.py导入的my_package将从开发目录导入。

这假设您使用某种类似bash的shell,其中<用作输入重定向。

答案 1 :(得分:0)

sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'bin'))

所以,在__init__.py

import os
import sys

sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'bin'))

import some_script

some_script.some_function()

答案 2 :(得分:0)

我遇到了同样的问题,最后我最终在我的剧本开头做了这个:

try:
    # this works after package has been installed using distutils for example
    import my_package
except ImportError:
    # this should work during dev time with the directory layout you describe
    rootpath = os.path.dirname(os.path.realpath(os.path.join(__file__, "../")))
    sys.path.insert(0, rootpath)
    try:
        import my_package
    except ImportError:
        print("*** my_package is not installed properly. Exiting.")
        sys.exit()

现在我可以从项目根目录执行控制台脚本:

bin/some_script.py --help

希望这有帮助!