【问题标题】:how can I import [.myfolder.pyfile] as [something else]?如何将 [.my folder.py 文件] 作为 [其他内容] 导入?
【发布时间】:2020-07-23 19:15:27
【问题描述】:

假设我有

project
   |__ utilities
   |      |__ foo.py
   |
   |__ boost_extensions
   |      |__ myclass.cpp
   |      |__ myclass.so
   |
   |__ someotherstuff
   |      |__ bar.py      
   |
   |__ mylib.py
   |
   |__ __main__.py

是否可以在 ma​​in.py

中做这样的事情
import .utilities.foo as Foo
# this function will pass Foo to C++ and initialize it to a global variable
initCppFunction(Foo)

我已经尝试过了,但它给了我一个无效的语法错误(由于从 boost/python 导入 python 模块的一些问题,我正在尝试这样做)。有没有办法做到这一点?

谢谢

【问题讨论】:

    标签: python python-3.x import python-import boost-python


    【解决方案1】:

    使用

    从 .utilities 导入 foo 作为 Foo

    【讨论】:

      【解决方案2】:

      我认为这里的问题是这些文件夹中都没有__init__.py,无论是project 文件夹还是utilitiesboost_extensionssomeotherstuff

      为了让 Python 知道您希望能够进行导入,它必须知道有一整组代码,称为包。为此,您可以将 __init__.py 文件放在任何您想要形式化的地方,并告诉 Python“这是一组相关代码”。

      https://docs.python.org/3/reference/import.html#regular-packages

      编辑

      第一个答案也提出了一个很好的观点,你 from x.y import z 是正确的语法。

      编辑 2

      克里希南是完全正确的。 __init__.py 文件不需要包含任何内容。如果需要,您可以将代码放入其中,但这根本不是必需的。

      【讨论】:

      • 澄清一下,这些初始化文件可以是完全空白的,只是告诉 Python 它是一个模块。
      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2012-10-07
      • 2021-10-04
      • 2022-01-22
      相关资源
      最近更新 更多