Устранены ошибки при установке личного пакета PyPI - PullRequest
0 голосов
/ 10 июля 2020

Я успешно загрузил свой проект в PyPI и хотел установить его сам, чтобы проверить, работает ли он. Однако каждый раз, когда я пытаюсь загрузить его, он выдает эту ошибку! Мне отчаянно нужна помощь, спасибо!

    ERROR: Command errored out with exit status 1:
     command: /Library/Frameworks/Python.framework/Versions/3.8/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-install-bp0xti0o/influence/setup.py'"'"'; __file__='"'"'/private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-install-bp0xti0o/influence/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj
         cwd: /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-install-bp0xti0o/influence/
    Complete output (8 lines):
    running egg_info
    creating /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info
    writing /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info/PKG-INFO
    writing dependency_links to /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info/dependency_links.txt
    writing requirements to /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info/requires.txt
    writing top-level names to /private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info/top_level.txt
    writing manifest file '/private/var/folders/n4/r_gyzzn158x562qr7zyb9sxh0000gp/T/pip-pip-egg-info-dpyhhxvj/influence.egg-info/SOURCES.txt'
    error: package directory 'influence' does not exist
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

1 Ответ

0 голосов
/ 19 июля 2020
  1. Поместите __init__.py во все каталоги, в которых его нет.

Так Python узнает, что это импортируемый модуль. Без этих файлов influence не распознавался как пакет и был пропущен. Обратите внимание, что это не только каталог influence, но и многие другие каталоги более низкого уровня.

Пакет колеса сборки вместо исходных текстов: python3 setup.py bdist

sdist - это устаревший формат пакета, буквально просто архив исходных текстов. Если вам абсолютно необходимо собрать sdist, напишите правильный MANIFEST.in, перечисляя файлы для включения. Однако в наши дни действительно предпочтительнее создавать пакеты wheel.

UPD:

  • Первое предложение критично только для более старых версий Python . По-видимому, это больше не является строгим требованием, по крайней мере, с Python 3.8
  • packages аргумент в setup.py не будет рекурсивно включать базовые каталоги. Итак, в этом случае вам нужно обновить это, чтобы оно выглядело так:
setup(
    ...,
    packages = [
        'influence.upgrader.array',
        'influence.extender.cout',
        'influence.extender.list',
        'influence.extender.math',
        'influence.extender.string',
    ],
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...