2017-03-04 186 views
1

我正在编写我自己的模块mymodule。它包含了这一点:(Python)相对导入最佳做法(导入x或from。import x)

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

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


然后,我改变,因为测试与这些相对进口麻烦只使用import file2。我已经描述过这个问题here


而且现在有没有的.问题与进口因为安装模块时,他们不工作了。 (我把它安装到我自己的电脑上。)


有什么更好?如何避免由.以外的进口引发的问题? (我知道,可以注意不要使用已经使用过的名字,但是我几乎不能相信某些可能会让别人因为他使用我的模块而导致程序崩溃的事情

那么:什么是最佳实践?为什么而如果没有这样的事情:?用什么地方

+1

http ://stackoverflow.com/a/14132912/1622937 – jojo

回答

0

这里是两者之间的区别解释

这意味着,需要导入脚本的单件的不同方式。当它们以不同的方式运行时

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

if is_run_as_unittest: 
    import file2 
else: 
    from . import file2 

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