有一段时间,我一直在为包装中的进口产品而挣扎。当我开发一个包时,我到处都读到,最好在该包的子模块中使用绝对导入。我理解这一点,我也更喜欢它。但是我不喜欢,我也读到你不应该在开发中使用sys.path.append('/path/to/package')
来使用你的包
所以我的问题是,如何从零开始开发这样一个包,直接使用绝对进口?目前,我使用相对导入开发包,因为这样我就能够在打包和安装之前测试我正在编写的代码,然后在发布并构建包后更改导入
做这种事的正确方法是什么?例如,在Pycharm中,您可以将文件夹标记为“source roor”,并且能够像包文件夹在路径中一样工作。我仍然读到这不是正确的方式。。。我错过了什么?如何在测试代码的同时开发包
您的里程数可能会有所不同,但我通常会这样做:
在一个包(
foo
)中,绝对(import foo.bar
)或相对(import .bar
)只要有效,对我来说都无关紧要。有时,我更喜欢相对的,尤其是当项目很大,某一天我可能会决定将一些源文件移动到一个子目录中时我如何测试?我的
$PYTHONPATH
中通常有.
,我的目录层次结构如下:然后
foo_project/test/test1.py
中的脚本将与您通常使用的包一样,使用import foo.bar
。当我测试代码时,我将在目录foo_project
中运行python test/test1.py
。由于我的$PYTHONPATH
中有.
,它将找到目录foo
,并将其用作包相关问题 更多 >
编程相关推荐