Невозможно создать пакет Python для pip - PullRequest
0 голосов
/ 22 октября 2018

Мне не удалось создать дистрибутив пакета Python.Я следовал инструкциям в https://packaging.python.org/tutorials/packaging-projects/, и вот что происходит.Например, если я создаю необходимые файлы и папки, как требуется

first/
   first/
     __init__.py
     setup.py
     LICENSE
     README.md
     myfirst.py

Я сделал имя пакета первым в файле setup.py

import setuptools

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

    setuptools.setup(
        name="tvg11",
        version="0.0.1",
        author="Ganesh",
        author_email="tvganesh.85@gmail.com",
        description="A small example package",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="https://github.com/pypa/sampleproject",
        packages=setuptools.find_packages(),
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
    )

Затем я запускаю команды

python setup.py sdist bdist_wheel
python -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*

, который создает dist/, build/ и first.egg-info.

Теперь я обнаружил, что если я нахожусь в том же каталоге и выполняю

pip install --index-url https://test.pypi.org/simple/ first

Затем я обнаружил, что это создает новую папку pycache с скомпилированным кодом, и я могу сделать import first

first/
  first/
    __pycache__     # new!
    build/
    dist/
    first.egg.info
    __init__.py
    setup.py
    LICENSE
    README.md
    myfirst.py

Однако, если я нахожусь в любой другой папке, кромекорневая папка 'first / first', и я делаю

pip install --index-url https://test.pypi.org/simple/ first

, я получаю 'Успешно установлен', но когда я вызываю python и выполняю import first, я получаю ModuleNotFoundError "No module 'first" ".

Пожалуйста, дайте мне знать, что я делаю неправильно.Инструкции были так просты.

1 Ответ

0 голосов
/ 22 октября 2018

Вы должны были смотреть интерактивно в test.pypi.org ...

Вы бы сразу заметили, что ваш собственный проект не известен как first, но как tvg11.Важно знать имя и номер версии в файле setup.py, а не имя папки.

Но настоящая причина в том, что вы поместили файлы пакета на тот же уровень, что и файл setup.py, иб packages=setuptools.find_packages().Так как у вас нет пакетов ниже setup.py, find_packages ничего не нашел, и вы создали интересный пакет, содержащий чуть более setup.py и README.md.

Как исправить:

Сначала вы должны построить более общую структуру для своего пакета:

  - first
    - setup.py
    - LICENSE
    - README.md

    - first
        - __init__.py
        - myfirst.py

Таким образом find_package найдет содержимое подпапки first в качестве источника для пакета tvg11.

...