小编Geo*_*eas的帖子

如何在包中包含示例或测试程序?

Python的食谱建议下面的树结构为"典型库包":

projectname/
    README.txt
    Doc/
        documentation.txt
    projectname/
        __init__.py
        foo.py
        bar.py
        utils/
            __init__.py
            spam.py
            grok.py
    examples/
        helloworld.py
Run Code Online (Sandbox Code Playgroud)

您会注意到examples/它们不属于实际包,它位于projectname/projectname/(您将找到__init__.py包的顶层)的实际包中.

好吧,examples/helloworld.py显然需要导入projectname包.

我知道StackOverflow中至少有2-3个相关问题.我不相信这是重复的,因为其他问题要么涉及到包内导入,要么在它们不在同一目录中时从另一个导入一个python模块的一般情况.在打包库时,我特别要求建议的方法.

有没有办法在不修改路径的情况下实现这一目标?如果修改路径是唯一的方法,有没有办法以优雅的方式完成?

让我详细说明最后一点.在Kenneth Reitz的Repository Structure和Python中,出现了类似的结构,tests/而不是examples/.这是完全相同的问题.他建议使用"一个简单(但显式)路径修改来正确解析包." 好的,但这是实际的代码:

import os
import sys
sys.path.insert(0, os.path.abspath('..'))
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢这个..部分.我希望有一个更通用的解决方案,希望能从我选择运行示例(或测试)的任何目录中使用.

python python-import python-packaging

6
推荐指数
1
解决办法
297
查看次数

标签 统计

python ×1

python-import ×1

python-packaging ×1