PyPI 包在所述包中找不到函数

PyPI package can't find functions in said package

我制作了一个名为 'pyutils39' 的 python 包。到目前为止,它具有函数 consoleask(question) 和 reverse(text)。它似乎上传正常并且在 pypi 上有一个页面。 (https://pypi.org/project/pyutils39).

我的问题

为了测试,我用 .\pip install pyutils39 安装了我的包。好像安装成功了,进入\Lib\site-packages\pyutils39确实有文件。但是,当我 运行 我的测试文件时,它崩溃了

Traceback (most recent call last):
  File "c:\Users\<MY USER>\AppData\Local\Programs\Python\Python39\Scripts\test.py", line 2, in <module>
    x = pyutils39.consoleask("Do you want to reverse hello?")
AttributeError: module 'pyutils39' has no attribute 'consoleask'

完全删除包的所有痕迹会导致错误 'Module Not Found'(预期)。将包文件放在与测试文件相同的文件夹中就可以了。

我试过的

我已经重新安装了我的包,重新制作了测试文件,并在 google 和堆栈溢出中搜索了这个问题,但没有任何效果。

代码

主文件:

def reverse(data):
    x = str(data)
    datalen = len(data)
    x = x[datalen::-1]
    return x
def consoleask(question):
    while True:
        print(str(question)+' (Y/N)')
        x = input()
        if x.lower().startswith('y'):
            return True
            break
        elif x.lower().startswith('n'):
            return False
            break

测试文件

import pyutils39
x = pyutils39.consoleask("Do you want to reverse hello?")
if x == True:
    print(pyutils39.reverse("hello"))

Setup.py

import setuptools

with open("README.md", "r", encoding="utf-8") as fh:
    long_description = fh.read()

setuptools.setup(
    name="pyutils39",
    version="0.1.3",
    author="Enderbyte09",
    author_email="enderbyte09@gmail.com",
    description="A utilities package",
    long_description=long_description,
    py_modules=['/src/pyutils39/pyutils39.py'],
    long_description_content_type="text/markdown",
    url="https://github.com/Enderbyte-Programs/pyutils39",
    project_urls={
        "Bug Tracker": "https://github.com/Enderbyte-Programs/pyutils39/issues",
    },
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ],
    package_dir={"": "src"},
    packages=setuptools.find_packages(where="src"),
    python_requires=">=3.8",

)

我对Whosebug还是个新手,所以如果有什么方法可以改进我的问题,请告诉我。

问题在于 setup.py 对包源使用了错误的指令。 在 setup() 调用中,使用 py_modules=['pyutils39.py'] - py_modules 用于声明单文件模块。现在它可能使用 packages 或类似的参数,将整个目录声明为一个模块。很难做出更明智的猜测,因为回购中缺少 setup.py

对于当前的布局,这可能会起作用:

from pyutils39 import pyutils39