Setuptools python - 项目中的导入问题
Setuptools python - import problem inside project
我正在尝试构建简单的项目,然后准备创建 whl 文件。但是在 pip install <name>.whl
之后我遇到了奇怪的导入问题。
项目结构:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py 文件:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
我有一个空的初始化文件。
我通过命令创建whl文件:python3 setup.py bdist_wheel
然后 cd dist/ && pip install ...
但是当我通过 foo
运行 编写脚本时,我得到了一个错误:
ModuleNotFoundError: 没有名为 'bar'
的模块
仅当我将项目拆分为几个文件时,当我尝试将所有内容保留在 main.py(删除 bar.py)中而不导入时,此问题才起作用。
知道我应该如何修改 setup.py 吗?
问题出在您的 导入 -- 而不是您的 setup.py
。发生的事情是您的 setup.py
正在安装包含子模块 main
和 bar
.
的软件包 foo
要从子模块中导入一个函数,您可以这样做:
from foo.bar import func2
或者,如果您正在进行包相对导入(例如,从 main
导入 bar
):
from .bar import func2
如果进行导入的模块不是 foo
包的一部分,则第二个版本将无法工作。
我正在尝试构建简单的项目,然后准备创建 whl 文件。但是在 pip install <name>.whl
之后我遇到了奇怪的导入问题。
项目结构:
foo/
/foo
__init__.py
main.py
bar.py
setup.py
setup.py 文件:
from setuptools import setup, find_packages
setup(
name='foo',
version='0.0.1',
packages=find_packages(),
include_package_data=True,
entry_points={'console_scripts': ['foo=foo.main:func1']}
)
main.py
from bar import func2
def func1():
print('func1')
func2()
bar.py
def func2():
print('func2')
我有一个空的初始化文件。
我通过命令创建whl文件:python3 setup.py bdist_wheel
然后 cd dist/ && pip install ...
但是当我通过 foo
运行 编写脚本时,我得到了一个错误:
ModuleNotFoundError: 没有名为 'bar'
的模块仅当我将项目拆分为几个文件时,当我尝试将所有内容保留在 main.py(删除 bar.py)中而不导入时,此问题才起作用。
知道我应该如何修改 setup.py 吗?
问题出在您的 导入 -- 而不是您的 setup.py
。发生的事情是您的 setup.py
正在安装包含子模块 main
和 bar
.
foo
要从子模块中导入一个函数,您可以这样做:
from foo.bar import func2
或者,如果您正在进行包相对导入(例如,从 main
导入 bar
):
from .bar import func2
如果进行导入的模块不是 foo
包的一部分,则第二个版本将无法工作。