使用导入的正确方法是什么?

时间:2018-04-13 12:43:11

标签: python

我的模块在以下示例结构中:

myapp
   --- application
      -- application.py
      -- __init__.py
   --- converter
       --  converter.py
       -- __init__.py
   --- gui
        --- panel.py
        --- __init__.py

现在,如果我在panel.py中,我该如何导入converter.py?它会是

吗?
  1. 来自myapp.converter导入转换器? (假设设置了sys.path)
  2. 来自转换器导入转换器的
  3. (假设设置了sys.path
  4. 导入转换器(假设设置了sys.path)
  5. 这些要点取决于运行主python应用程序的位置吗?即如果convert.py是要运行的程序或者panel.py是要运行的程序吗?

2 个答案:

答案 0 :(得分:1)

如果var str = "Hello, plaAyground" var scalars = str.unicodeScalars str = "Hello, plåÅyground" scalars = str.unicodeScalars print(scalars.dropFirst()) 不是模块(即根目录中没有myapp),则无法从中导入某些内容。例如__init__.py converter除非将panel.py(或父模块)添加到converter

如果PYTHON_PATH是一个模块(有myapp),您可以使用相对导入: __init__.py

相对导入明确表示您想要使用" local",并且通常是要走的路。 有关示例,请参阅https://docs.python.org/3/tutorial/modules.html#intra-package-references

已更新:修复术语以简化操作;)

答案 1 :(得分:1)

你应该更喜欢相对路径上的完整路径,所以在我看来,第一个是最好的方法,尽管你应该考虑添加一个别名,因为 converter 出现两次。

from myapp.converter import converter as conv

此外,您可以查找Python推荐(PEP8) https://www.python.org/dev/peps/pep-0008/#imports