【问题标题】:(Python) relative import best-practice (import x or from . import x) [duplicate](Python)相对导入最佳实践(import x 或 from .import x)[重复]
【发布时间】:2017-07-24 21:41:31
【问题描述】:

我正在编写自己的模块mymodule。它包含以下内容:

myroot
|-mymodule
| |-file1
| |-file2
|
|-tests
| |-...
|
|-...

file1 我想导入file2。首先我使用了from . import file2,因为这似乎是最佳实践——因为如果我在命名空间上犯了错误(例如,当该文件2有我已经使用的名称或类似的名称时,它也是如果我想从子模块导入文件更好)。


然后我改为只使用import file2,因为测试在这些相对导入方面存在问题。我已经描述了这个问题here


现在导入 没有 . 会出现问题,因为安装模块后它们不再起作用。 (我把它安装到我自己的电脑上。)


什么更好?如何避免在没有. 的情况下导入可能引发的问题? (我知道,可以注意不要使用已经使用的名称。但我很难相信可能会因为他使用我的模块而导致其他人程序崩溃的事情。

那么:最佳实践是什么?为什么?如果没有这样的东西:在哪里使用什么?

【问题讨论】:

标签: python import python-import relative-import


【解决方案1】:

这里解释了两者的区别。

这意味着,当脚本以不同的方式运行时,需要以不同的方式导入脚本的单个部分。

这意味着我要做的不是决定我应该使用哪种导入方式,而是使用类似的东西:

if is_run_as_unittest:
  import file2
else:
  from . import file2

所以我必须知道它是否是单元测试。 (我只是假设如果脚本是从单元测试中导入的,这也有效,至少最重要的是 主脚本(或顶级模块,无论如何) 是否作为单元测试运行.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 2019-08-22
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多