Как найти пространство имен пакета с pip - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь написать специальный пакет для python. Он имеет следующую структуру папок:

E:\GITHUB\FUNCTIONSYNTHESIZER
│   .gitignore
│   LICENSE
│   README.md
│   setup.py
│
├───docs
│       docs.md
│       Example-6-Points.png
│
└────src
    │   function_synth.py
    │   __init__.py
    │
    └───__pycache__

Pip разрешает установку через путь к папке в файле setup.py. Файл setup.py следует указаниям Python .org , наиболее важный из которых работает в другом пакете с другим именем:

from distutils.core import setup

def README():
    return open("README.md").read()

setup(name='function_synthesizer',
    version = '0.0.2',
    description = 'Generates a polynomial interpolation from a set up points',
    author = 'David J. Kowalk',
    author_email = '...',
    url = 'https://github.com/davidkowalk/FunctionSynthesizer',

    license = "MIT",
    keywords = "math interpolation polynomial calculus",

    long_description = README(),
    long_description_content_type='text/markdown',

    classifiers=[
        Calssifiers here
    ],

    package_dir = {'':'src'},

    python_requires = ">=3.6",
    install_requires=['numpy'],

    project_urls={
        'Bug Reports': '...',
        'Funding': '...',
        'Source': '...',
    }

)

__init__.py импортирует различные функции function_synth .

from function_synth import solve
from function_synth import to_str
from function_synth import calculate

Пакет устанавливается pip под именем "function_synthesizer", как это определено в setup.py, но когда я запускаю pip show function_synthesizer, я получаю

Name: function-synthesizer
Version: ...

Это имя нарушает синтаксис имени пакета и, самое главное, нигде не определен. Я не могу найти причину для этого da sh, и он почему-то заменяет подчеркивание, определенное аргументом name. Но даже когда я удаляю подчеркивание и полученный da sh python не может импортировать пакеты под следующими именами:

  • function_synthesizer
  • function-synthesizer (синтаксическая ошибка в da sh)
  • функциональный синтезатор (после удаления da sh)
  • function_synth (имя файла)

Есть ли в любом случае выборка пространства имен из пипа и как я могу определить это пространство имен в setup.py?

1 Ответ

0 голосов
/ 14 апреля 2020

Проблема была устранена путем добавления атрибута пакетов:

packages = ["function_synthesizer"],
package_dir = {'function_synthesizer':'src'},

__init__.py затем импортирует функции через

from function_synthesizer.function_synth import function_name
...