pip 和命令行的问题

Problems with pip und Command line

我正在尝试创建一个 Python pip 包。这也很好用。我可以成功上传和下载包并在 Python 代码中使用它。我不能做的是通过命令行使用 Python 包。在另一个 Whosebug post 中,我找到了 link 教程。我试着跟着它。显然我犯了一个错误。你们能帮帮我吗? Installation of the package via pip 在这里你可以看到安装成功了。不幸的是,并非整个脚本都适合图像。 Pip does not find the package. 不幸的是,我不能直接嵌入图像,所以我将它们嵌入为 links.

我创建了一个简单的 Python 包。它在这里仅代表一个例子。这里可以看到文件夹的结构

Riffecs
|   .gitignore
|   .pylintrc
|   LICENSE
|   README.md
|   requirements.txt
|   setup.py
|
|
\---riffecs
        __init__.py
        __main__.py

这里显示的是基本文件。

main.py

from . import hello_world

if __name__ == '__main__':
    hello_world()

init.py

def hello_world():
    print("Hello world")

在下面你可以看到“setup.py”。我认为我已按照说明进行操作。但显然我在某个地方犯了错误。你能帮我改正这个错误吗?

import io
import os
import setuptools


def read_description():
    url = "README.md"
    """ Read and Return the description """
    return io.open(os.path.join(os.path.dirname(__file__), url), encoding="utf-8").read()


def def_requirements():
    """ Check PIP Requirements """
    with open('requirements.txt', encoding='utf-8') as file_content:
        pip_lines = file_content.read().splitlines()
    return pip_lines


setuptools.setup(
    name="riffecs",
    version='0.0.3',
    description='test',
    entry_points={'console_scripts': ['hello-world=riffecs:hello_world',]},
    long_description=read_description(),
    long_description_content_type="text/markdown",
    license="MIT",
    keywords="test - riffecs",
    url="https://github.com/Riffecs/riffecs",
    packages=["riffecs"],
    install_requires=def_requirements(),
    python_requires=">=3.6",
    classifiers=[
        "Development Status :: 4 - Beta",
        "Intended Audience :: Developers",
        "Intended Audience :: Science/Research",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
        "Programming Language :: Python",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
    ],
)

在你的 setup.py 文件中你有这一行...

entry_points={'console_scripts': ['hello-world=riffecs:hello_world',]},

这是通过命令行调用包的入口点。此配置要求入口点为 hello-world,我试过了 运行 没问题。

但是在您的图像中,您 运行 riffecx 未配置为程序包的入口点。

如果您希望入口点为 riffecx。将行更改为:

entry_points={'console_scripts': ['riffecx=riffecs:hello_world']},

希望对您有所帮助。