如何在包中包含示例或测试程序?
Python Cookbook为“典型库包”建议了以下树结构:
您会注意到examples /不是实际包的一部分,它位于projectname / projectname /下(您可以在其中找到包的顶级__init__.py). 那么,examples / helloworld.py显然需要导入projectname包. 我知道StackOverflow中至少有2-3个相关问题.我不相信这是重复的,因为其他问题要么涉及到包内导入,要么在它们不在同一目录中时从另一个导入一个python模块的一般情况.在打包库时,我特别要求建议的方法. 有没有办法在不修改路径的情况下实现这一目标?如果修改路径是唯一的方法,有没有办法以优雅的方式完成? 让我详细说明最后一点.在Kenneth Reitz的Repository Structure and Python中,出现了类似的结构,其中包括tests /而不是examples /.这是完全相同的问题.他建议使用“一个简单(但显式)路径修改来正确解析包.”好的,但这是实际的代码:
我真的不喜欢..部分.我希望有一个更通用的解决方案,希望能从我选择运行示例(或测试)的任何目录中使用. 最佳答案
虽然文件夹树看起来没问题,但我认为隐含地假设模块可用于导入是错误的,无论是开发人员的角度还是从用户的角度来看.
确实,您可以在技术上使用sys.path.insert(0,os.path.abspath(‘..’))为python添加任何路径以允许从中导入,但这意味着您,开发人员必须确保添加的路径始终位于正确的位置. 用户通常安装包以使用它们.开发人员有一个明确的工作流程: >安装了pip和virtualenv(甚至更好,virtualenvwrapper) 常见的工作流程:
以可编辑模式安装的软件包意味着有一个指向软件包目录的egg-link文件:
用户将在不处理可编辑模式的情况下执行相同的操作.只需创建虚拟环境并在其中安装包.然后,当他们完成工作后,他们将删除这些虚拟环境.十分简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |