gpt4 book ai didi

python - load_entry_point 看不到其他模块 - "No module named"错误

转载 作者:行者123 更新时间:2023-12-01 06:38:36 27 4
gpt4 key购买 nike

我在通过 pip install 创建的脚本运行 python 应用程序时遇到问题。 ModuleNotFoundError 发生的原因对我来说是隐藏的:/

#jsdc
Traceback (most recent call last):
File "/usr/local/bin/jsdc", line 6, in <module>
from src.sensor_data_collector import main
File "/usr/local/lib/python3.7/site-packages/src/sensor_data_collector.py", line 6, in <module>
from gatherer import Gatherer
ModuleNotFoundError: No module named 'gatherer'

当我直接通过入口 pip 运行应用程序时,一切都运行顺利:

python /usr/local/lib/python3.7/site-packages/src/sensor_data_collector.py

项目设置.py:

import os
import pathlib
import subprocess
from setuptools import setup, find_packages
from setuptools.command.install import install

HERE = pathlib.Path(__file__).parent

README = (HERE / "README.md").read_text()


def run(self):
install.run(self)
current_dir_path = os.path.dirname(os.path.realpath(__file__))
create_service_script_path = os.path.join(current_dir_path, 'install_scripts', 'create_service.sh')
subprocess.check_output([create_service_script_path])


setup(
name="jacfal-sensor-data-collector",
version="0.0.1",
description="Collects data from iot sensors and sent them to defined target",
long_description=README,
long_description_content_type="text/markdown",
url="https://github.com/Jacfal/SensorDataCollector",
author="Jacfal",
author_email="jacfal.tech@protonmail.com",
license="MIT",
classifiers=[
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.7",
],
packages=find_packages(),
entry_points={
"console_scripts": ["jsdc=src.sensor_data_collector:main", ]
},
)

项目文件结构:

.
├── install_scripts
│   └── create_service.sh
├── install.sh
├── LICENSE
├── README.md
├── requirements.txt
├── setup.py
├── src
│   ├── configuration.py
│   ├── config.yml
│   ├── event.py
│   ├── gatherer.py
│   ├── helpers
│   │   ├── __init__.py
│   │   └── sensor_helpers.py
│   ├── __init__.py
│   ├── sensor_data_collector.py
│   ├── sensor.py
│   ├── sensors
│   │   ├── dummy_sensor.py
│   │   └── __init__.py
│   ├── targets
│   │   ├── influxdb_target.py
│   │   ├── __init__.py
│   │   └── log_target.py
│   └── target_system.py
└── tests

我是第一次使用 setup.py,所以我很高兴获得任何帮助或建议。谢谢。

最佳答案

图片中缺少一些东西。您似乎没有顶级包,并且您的发行版的构建方式就好像将 src 作为顶级包名称 - 尝试 import src.gatherer 并它会“工作”。

当然,正确的解决方法是拥有一个适当的顶级包,这意味着您需要在内部创建一个目录src(sensor_data_collector 也许?)并将所有文件移动到那个目录中;并使用find_packages('src')。然后您需要为所有导入添加此前缀。

关于python - load_entry_point 看不到其他模块 - "No module named"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59555953/

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