2

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

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

file1我想导入file2. 首先我使用from . import file2它是因为这似乎是最佳实践 - 因为如果我在命名空间上犯了错误不会有任何问题(例如,当那个 file2 有我已经使用的名称或类似的东西时,如果我想要从子模块导入文件)。


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


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


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

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

4

1 回答 1

-1

这里解释一下两者的区别。

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

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

if is_run_as_unittest:
  import file2
else:
  from . import file2

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

于 2017-03-04T21:46:38.843 回答