如何将 [.myfolder.pyfile] 导入为 [其他]?
how can I import [.myfolder.pyfile] as [something else]?
假设我有
project
|__ utilities
| |__ foo.py
|
|__ boost_extensions
| |__ myclass.cpp
| |__ myclass.so
|
|__ someotherstuff
| |__ bar.py
|
|__ mylib.py
|
|__ __main__.py
是否可以在 main.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 模块时出现一些问题,我正在尝试这样做)。有办法吗?
谢谢
使用
from .utilities import foo as Foo
我认为这里的问题是 none 这些文件夹中有 __init__.py
,要么是 project
文件夹,要么是 utilities
或 boost_extensions
或someotherstuff
.
为了让 Python 知道您希望能够进行导入,它必须知道有一整组代码,称为包。您可以通过将 __init__.py
文件放在您想要形式化的任何地方并告诉 Python “这是一组相关代码”来做到这一点。
https://docs.python.org/3/reference/import.html#regular-packages
编辑
第一个答案也提出了一个很好的观点,你 from x.y import z
作为正确的语法。
编辑 2
克里希南完全正确。 __init__.py
文件不需要包含任何内容。如果需要,您可以将代码放入其中,但这根本不是必需的。
假设我有
project
|__ utilities
| |__ foo.py
|
|__ boost_extensions
| |__ myclass.cpp
| |__ myclass.so
|
|__ someotherstuff
| |__ bar.py
|
|__ mylib.py
|
|__ __main__.py
是否可以在 main.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 模块时出现一些问题,我正在尝试这样做)。有办法吗?
谢谢
使用
from .utilities import foo as Foo
我认为这里的问题是 none 这些文件夹中有 __init__.py
,要么是 project
文件夹,要么是 utilities
或 boost_extensions
或someotherstuff
.
为了让 Python 知道您希望能够进行导入,它必须知道有一整组代码,称为包。您可以通过将 __init__.py
文件放在您想要形式化的任何地方并告诉 Python “这是一组相关代码”来做到这一点。
https://docs.python.org/3/reference/import.html#regular-packages
编辑
第一个答案也提出了一个很好的观点,你 from x.y import z
作为正确的语法。
编辑 2
克里希南完全正确。 __init__.py
文件不需要包含任何内容。如果需要,您可以将代码放入其中,但这根本不是必需的。