开发软件包时如何使用绝对进口

2024-05-11 22:32:41 发布

您现在位置:Python中文网/ 问答频道 /正文

有一段时间,我一直在为包装中的进口产品而挣扎。当我开发一个包时,我到处都读到,最好在该包的子模块中使用绝对导入。我理解这一点,我也更喜欢它。但是我不喜欢,我也读到你不应该在开发中使用sys.path.append('/path/to/package')来使用你的包

所以我的问题是,如何从零开始开发这样一个包,直接使用绝对进口?目前,我使用相对导入开发包,因为这样我就能够在打包和安装之前测试我正在编写的代码,然后在发布并构建包后更改导入

做这种事的正确方法是什么?例如,在Pycharm中,您可以将文件夹标记为“source roor”,并且能够像包文件夹在路径中一样工作。我仍然读到这不是正确的方式。。。我错过了什么?如何在测试代码的同时开发包


Tags: 模块topath方法代码标记文件夹package
1条回答
网友
1楼 · 发布于 2024-05-11 22:32:41

您的里程数可能会有所不同,但我通常会这样做:

在一个包(foo)中,绝对(import foo.bar)或相对(import .bar)只要有效,对我来说都无关紧要。有时,我更喜欢相对的,尤其是当项目很大,某一天我可能会决定将一些源文件移动到一个子目录中时

我如何测试?我的$PYTHONPATH中通常有.,我的目录层次结构如下:

/path/to/foo_project
   /setup.py
   /foo
      /__init__.py
      /bar.py
   /test
      /test1.py
      /test2.py

然后foo_project/test/test1.py中的脚本将与您通常使用的包一样,使用import foo.bar。当我测试代码时,我将在目录foo_project中运行python test/test1.py。由于我的$PYTHONPATH中有.,它将找到目录foo,并将其用作包

相关问题 更多 >