хрупкий консольный скрипт: pkg_resources.DistributionNotFound - PullRequest
1 голос
/ 08 марта 2019

Если я создаю console_scripts через entry_point в setup.py, то этот файл создается:

#!/home/myproject_cok_d/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'mylib','console_scripts','do-magic'
__requires__ = 'mylib'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(
        load_entry_point('mylib', 'console_scripts', 'do-magic')()
    )

К сожалению, этот скрипт хрупок.

Иногда я получаю исключения вроде этого:

Traceback (most recent call last):
  File ".../bin/do-magic", line 6, in <module>
    from pkg_resources import load_entry_point
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2999, in <module>
    @_call_aside
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2985, in _call_aside
    f(*args, **kwargs)
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3012, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 662, in _build_master
    ws.require(__requires__)
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 970, in require
    needed = self.resolve(parse_requirements(requirements))
  File ".../local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 856, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'PyPDF2==1.26' distribution was not found and is required by mylib

Есть ли способ сделать мой сценарий (do-magic) более зрелым?

В этом случае: ему не нужен PyPDF2.

1 Ответ

2 голосов
/ 05 апреля 2019

Я столкнулся с той же ошибкой. Чтобы решить эту проблему, вы должны обновить PYTHONPATH, чтобы добавить каталог сайта. В Windows вы должны перейти в командную строку и ввести следующее:

set pythonpath=<PATH_TO_SITE_DIR>

И Mac это:

export PYTHONPATH="${PYTHONPATH}:<PATH_TO_SITE_DIR>"

Здесь - дополнительная информация об ошибке.

...