Я внедряю свой собственный пакет модулей Python под названием JBPY. Я использую setuptools с файлом pyproject.toml в качестве системы сборки. Я также попытался установить модуль в качестве корня, чтобы сделать его глобально доступным. Это просто создает ту же ошибку, когда я пытаюсь им импортировать.python3 -m build
< /code>
И я использую эту команду для установки пакета: < /p>
python3 -m pip install dist/jbpy-0.0.2.9-py3-none-any.whl
< /code>
Когда я пытаюсь импортировать модуль, я получаю эту ошибку: < /p>
$ ./importtest.py
Traceback (most recent call last):
File "/home/jbang/development/projects/jbpy/test/./importtest.py", line 8, in
import jbpy.logging
ModuleNotFoundError: No module named 'jbpy'
< /code>
Скрипт importTest.py очень прост: < /p>
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# Test importing the module
import jbpy.logging
if __name__ == "__main__":
print("Modules imported")
< /code>
Я уверен, что модуль установлен, так почему Python не может его найти?$ python3 -m pip install dist/jbpy-0.0.2.9-py3-none-any.whl
Defaulting to user installation because normal site-packages is not writeable
Processing ./dist/jbpy-0.0.2.9-py3-none-any.whl
Installing collected packages: jbpy
Attempting uninstall: jbpy
Found existing installation: jbpy 0.0.2.8
Uninstalling jbpy-0.0.2.8:
Successfully uninstalled jbpy-0.0.2.8
Successfully installed jbpy-0.0.2.9
$ pip list | grep jbpy
jbpy 0.0.2.9
$ pip show jbpy
Name: jbpy
Version: 0.0.2.9
Summary: A package with utility functions to make my Python life easier.
Home-page:
Author:
Author-email: Jens Bang
License:
Location: /home/jbang/.local/lib/python3.12/site-packages
Requires:
Required-by:
< /code>
и конфигурация путей модуля в Python: < /p>
sys.executable='/usr/bin/python3'
sys.path = [
'/home/jbang/development/projects/jbpy/test',
'/usr/lib/python312.zip',
'/usr/lib/python3.12',
'/usr/lib/python3.12/lib-dynload',
'/home/jbang/.local/lib/python3.12/site-packages',
'/usr/local/lib/python3.12/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/lib/python3.12/dist-packages'
]
sysconfig.get_default_scheme()='posix_local'
sysconfig.get_preferred_scheme("prefix")='posix_local'
sysconfig.get_preferred_scheme("home")='posix_home'
sysconfig.get_preferred_scheme("user")='posix_user'
sysconfig.get_paths('posix_local') = {
'stdlib' : '/usr/lib/python3.12',
'platstdlib' : '/usr/lib/python3.12',
'purelib' : '/usr/local/lib/python3.12/dist-packages',
'platlib' : '/usr/local/lib/python3.12/dist-packages',
'include' : '/usr/include/python3.12',
'platinclude' : '/usr/include/python3.12',
'scripts' : '/usr/local/bin',
'data' : '/usr/local'
}
sysconfig.get_paths('posix_home') = {
'stdlib' : '/usr/lib/python',
'platstdlib' : '/usr/lib/python',
'purelib' : '/usr/lib/python',
'platlib' : '/usr/lib/python',
'include' : '/usr/include/python',
'platinclude' : '/usr/include/python',
'scripts' : '/usr/bin',
'data' : '/usr'
}
sysconfig.get_paths('posix_user') = {
'stdlib' : '/home/jbang/.local/lib/python3.12',
'platstdlib' : '/home/jbang/.local/lib/python3.12',
'purelib' : '/home/jbang/.local/lib/python3.12/site-packages',
'platlib' : '/home/jbang/.local/lib/python3.12/site-packages',
'include' : '/home/jbang/.local/include/python3.12',
'scripts' : '/home/jbang/.local/bin',
'data' : '/home/jbang/.local'
}
sysconfig.get_python_version()='3.12'
sysconfig.get_platform()='linux-x86_64'
os.name='posix'
sysconfig.get_path('stdlib') = '/usr/lib/python3.12'
sysconfig.get_path('platstdlib') = '/usr/lib/python3.12'
sysconfig.get_path('purelib') = '/usr/local/lib/python3.12/dist-packages'
sysconfig.get_path('platlib') = '/usr/local/lib/python3.12/dist-packages'
sysconfig.get_path('include') = '/usr/include/python3.12'
sysconfig.get_path('scripts') = '/usr/local/bin'
sysconfig.get_path('data') = '/usr/local'
< /code>
my pyproject.toml File выглядит так: < /p>
[build-system]
requires = ["setuptools >= 77.0.3"]
build-backend = "setuptools.build_meta"
[project]
name = "jbpy"
version = "0.0.2.9"
authors = [{name = "Jens Bang", email = "[email protected]"}]
description = "A package with utility functions to make my Python life easier."
readme = "README.md"
requires-python = ">=3.6"
license = "BSD-3-Clause"
classifiers = [
"Programming Language :: Python :: 3",
]
[tool.setuptools.packages.find]
where = ["src"] # list of folders that contain the packages (["."] by default)
include = ["argparse*", "logging*", "json*"] # package names should match these glob patterns (["*"] by default)
exclude = ["__*"] # exclude packages matching these glob patterns (empty by default)
namespaces = false # to disable scanning PEP 420 namespaces (true by default)
< /code>
Мои файлы расположены так: < /p>
.
├── changelog.md
├── dist/
├── generate_package.sh
├── install_package.sh
├── pyproject.toml
├── README.md
├── requirements.txt
├── src
│ ├── argparse.py
│ ├── general.py
│ ├── __init__.py
│ ├── jbpy.egg-info/
│ ├── json.py
│ └── logging.py
├── test/
└── venv/
Подробнее здесь: https://stackoverflow.com/questions/797 ... r-no-modul
Мой частный модуль и установленный модуль дает «ModulenotFoundError: нет модуля с именем" jbpy '"при импорте ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение