【发布时间】:2019-01-01 23:56:36
【问题描述】:
我正在尝试构建简单的项目,然后准备创建 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 吗?
【问题讨论】:
-
我认为问题在于您的 imports,而不是您的
setup.py。我认为应该是from foo.bar import func2? (或者如果你想使用包间导入,from .bar import func2) -
呵呵,谢谢,没想到:)
-
没问题。我现在有几分钟的时间 - 我将对此进行一些扩展并将其写下来作为答案,希望有一天它会对其他人有所帮助......
标签: python import python-import setuptools setup.py