gpt4 book ai didi

python - setup.py console_scripts 入口点不解析导入

转载 作者:行者123 更新时间:2023-11-28 22:34:12 25 4
gpt4 key购买 nike

我有以下 setup.py:

from setuptools import setup
from distutils.core import setup
setup(
name="foobar",
version="0.1.0",
author="Batman",
author_email="batman@gmail.com",
packages = ["foobar"],
include_package_data=True,
install_requires=[
"asyncio",
],
entry_points={
'console_scripts': [
'foobar = foobar.__main__:main'
]
},
)

现在,ma​​in.py 文件已安装并可在安装后由 foobar 从控制台调用,这正是我想要的。问题是,ma​​in.py 在第 3 行有导入,但它不起作用。

所以我的文件夹结构如下

dummy/setup.py
dummy/requirements.txt
dummy/foobar/__init__.py
dummy/foobar/__main__.py
dummy/foobar/wont_be_imported_one.py

我在虚拟目录中运行 python3 setup.py bdist。安装后运行 foobar 时,出现错误

File "/usr/local/bin/foobar", line 9, in <module>
load_entry_point('foobar==0.1.0', 'console_scripts', 'foobar')()

[...]

ImportError: No module named 'wont_be_imported_one'.

更新。__init__.py 的内容为

from wont_be_imported_one import wont_be_imported_one

wont_be_imported_one.py 具有我实际需要导入的来自 wont_be_imported_one 的函数。

最佳答案

在 Python 3 中,import 默认是绝对的,因此 from wont_be_imported_one import ... inside foobar 将被解释为对 foobar 之外的某个名为 wont_be_imported_one 的模块的引用。您需要改用相对导入:

from .wont_be_imported_one import wont_be_imported_one
# ^ Add this

参见 PEP 328获取更多信息。

关于python - setup.py console_scripts 入口点不解析导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39207670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com