如何修复为PyPi打包Python应用程序时出现的ModuleNotFound错误

2024-04-23 06:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试运行我的应用程序时遇到此错误,该应用程序是通过从PyPi下载的

$ python3 -m pip install --user speed-reader
$ speed-reader --help
Traceback (most recent call last):
  File "/home/h5l/.local/bin/speed-reader", line 5, in <module>
    from reader import main
ModuleNotFoundError: No module named 'reader'

我从来没有为PyPi打包过东西,所以我可能误解了他们的文档

这是我的setup.py

$ cat setup.py
import setuptools

with open("README.md", "r") as f:
    long_description = f.read()

setuptools.setup(
    name="speed-reader",
    version="1.0.3",
    author="h5law",
    author_email="h5law@pm.me",
    description="A speed reader implemented in Python",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/h5law/speed-reader",
    packages=setuptools.find_packages(),
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent"
    ],
    python_requires='>=3.6',
    install_requires=["numpy", "click"],
    entry_points={
        'console_scripts': [
            'speed-reader = reader:main',
        ],
    },
)

我哪里做错了?我的目录结构如下:

reader/
 - LICENSE.txt
 - README.md
 - setup.py
 - requirements.txt
 - speed-reader/
    - __init__.py  [empty]
    - reader.py    [entry point main() exists]

问题是,当直接运行时,它会工作,所以问题一定是包装没有

$ python3 reader.py --help
Usage: reader.py [OPTIONS] PATH

Options:
  --version      Show the version and exit.
  --wpm INTEGER  Read at specified WPM, defaults to 160
  --help         Show this message and exit.

更新:

像这样安装软件包

$ git clone https://github.com/h5law/speed-reader
$ cd speed-reader
$ python3 -m pip install .

在不发生错误的情况下创建完全工作的包

任何和所有的帮助将不胜感激


Tags: installpy应用程序mainversion错误setuphelp
1条回答
网友
1楼 · 发布于 2024-04-23 06:49:57

您正在使用packages=setuptools.find_packages(),这将在当前目录中找到模块

python模块可以是*.py文件,也可以是包含__init__.py文件的目录

因此find_packages仅查找speed-reader包。如果您想从中访问reader.py,您需要执行以下操作:

from speed_reader.reader import main

相关问题 更多 >