我已经定义了一个方法foo
和一个在文件bar
中有一个方法的类foo_bar
__init__.py
dir/
__init__.py
runme.py
现在我想__init__.py
从runme.py
我努力了
# in runme.py
from . import foo
foo()
和
import foo
foo()
但两者都不起作用。我正在使用 Python 3.7 和 Windows 10 Home
我已经阅读了如何导入 __init__.py 中定义的类并做了一些研究。
Python 的例外是:
ImportError: attempted relative import with no known parent package
# __ init __.py
def foo():
print("Im Foo")
class bar:
def __init__():
pass
def foo_bar(self):
print("Im Foo_Bar in class bar")
如果pkg
是你的主要包,你可以导入它(又名pkg/__init__.py
文件):
import pkg
如果你想要foo_bar
这个包中的函数,你可以这样写:
from pkg import foo_bar
因此,在runme.py
模块中,您可以执行以下操作:
from pkg import foo_bar
foo_bar(...)
当然,您需要runme.py
从根目录(目录的父pkg
目录)调用您的模块:
python pkg/runme.py
# or
python -m pkg.runme
请考虑阅读将模块作为脚本执行
编辑 1
您可以将项目根目录添加到sys.path
:
# in `runme.py`:
def _fix_sys_path():
import os
import sys
HERE = os.path.abspath(os.path.dirname(__file__)) # /path/to/project_dir/pkg
PROJECT_DIR = os.path.dirname(HERE) # /path/to/project_dir
sys.path.insert(0, PROJECT_DIR)
_fix_sys_path()
from pkg import foo_bar
foo_bar(...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句