Пользовательский пакет Python не импортируется

Я написал пакет для сбора данных и теперь пытаюсь взаимодействовать с ним для хранения и обслуживания указанных данных, но он не импортируется, хотя я установил его на pip. Это страница PyPI: https://pypi.org/project/smog-usage-stats/ репозиторий доступен здесь https://github.com/Stu-Gotz/smog_usage_stats извините, это любезно Я против правила минимальной воспроизводимости, но нет короткого способа включить весь пакет.

from smog_usage_stats import UsageStatsLookup
import requests

if requests:
    print("yes")
else:
    print("no")

При тестировании выводится «да» (когда первая строка закомментирована), поэтому другие пакеты работают правильно. Я расставил все точки над «т» и все «и» и у меня нет опыта написания пакетов Python, поэтому я не уверен, что я мог сделать не так.

Это файловая структура проекта и ниже, которые я вставил в свой pyproject.toml

# pyproject.toml

[build-system]
requires=["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "smog_usage_stats"
version = "1.0.4"
dependencies = [
    "beautifulsoup4",
    "pathlib",
    "psycopg==3.1.12",
    "psycopg-binary==3.1.12",
    "psycopg2==2.9.5",
    "python-dateutil",
    "python-dotenv",
    "requests",
    "soupsieve",
    "typing_extensions",
]
readme = "README.md"
authors = [{ name = "stu.gotz.dev", email = "[email protected]" }]
license = { file = "LICENSE" }
classifiers = [
    "License :: OSI Approved :: MIT License",
    "Intended Audience :: Developers",
    "Programming Language :: Python :: 3",
    "Operating System :: OS Independent"
]
keywords = ["pokemon", "usage", "pokemon showdown", "smogon"]
requires-python = ">=3.7"

[project.optional-dependencies]
dev = ["black", "bumpver", "isort", "pip-tools", "pytest"]

[tool.bumpver]
current_version = "1.0.4"
version_pattern = "MAJOR.MINOR.PATCH"
commit_message = "bump version {old_version} -> {new_version}"
commit = true
tag = true
push = true

[tool.bumpver.file_patterns]
"pyproject.toml" = [
    'current_version = "{version}"',
    'version = "{version}"'
]
"src/smog_usage_stats/__init__.py" = ["{version}"]
"setup.py" = [
    "{version}",
    "{pep440_version}",
]
"README.md" = [
    "{version}",
    "{pep440_version}",
]


а вот содержимое упаковки smog_usage_stats/src/smog_usage_stats/__init__.py:

import sys
import os

__version__ = "1.0.4"
__author__ = ""

# Get the parent directory
parent_dir = os.path.dirname(os.path.realpath(__file__))

# Add the parent directory to sys.path
sys.path.append(parent_dir)

РЕДАКТИРОВАТЬ

Я воспользовался советом некоторых людей из комментариев и ответов, и, похоже, это только еще больше сломало его, поэтому я не уверен, что происходит, но он импортируется, однако, когда я запускаю его с помощью кнопки «Воспроизвести» в VS Code, я получаю ModuleNotFoundError , но когда я запускаю py script.py в терминале (venv всегда активен), мне выдается распечатка, а ModuleNotFoundError нет.

(venv) PS C:\dev\gssp> & c:/dev/gssp/.venv/Scripts/python.exe c:/dev/gssp/data_collection.py
Traceback (most recent call last):
  File "c:\dev\gssp\data_collection.py", line 1, in <module>
    from smog_usage_stats import Search
ModuleNotFoundError: No module named 'smog_usage_stats'
(venv) PS C:\dev\gssp> py data_collection.py
yes

и, как было предложено в другом ответе, это мой setup.py файл:

from setuptools import setup

setup()

Обновлено еще раз:

Я идиот, это не сработало, потому что указывало не на тот венв.

from smog_usage_stats import Usage

🤔 А знаете ли вы, что...
Python популярен в анализе данных и машинном обучении с помощью библиотеки scikit-learn.


2
51
1

Ответ:

Решено

Кажется, ваша структура проекта неверна. Обязательно следует структуре проекта.

smog_usage_stats/
├── src/
│   └── smog_usage_stats/
│       ├── __init__.py
│       ├── (Other Package Files)
├── pyproject.toml
└── setup.py

Следующий шаг — убедиться, что setup.py настроен правильно, а также все зависимости и правильная версия Python.

Наконец, вы можете попробовать установить его с помощью pip install. команда. Пожалуйста, поделитесь более подробной информацией об ошибке, если вы все еще сталкиваетесь с проблемой.