У меня небольшая проблема с правильной сборкой и установкой моего компьютера с setuptools
.
Структура моего проекта выглядит следующим образом:
foobar/
cli/
src/
main
__init__.py
config.json
__init__.py
setup.py
requirements.txt
venv.sh
README.md
.gitignore
__init__.py
Мой setup.py
выглядит так:
from setuptools import setup, find_packages
# Package meta-data.
__version__ = '0.0.1'
# What packages are required for this module to be executed?
REQUIRED = ['requests', 'argparse']
# Where the magic happens:
setup(
name='foobar',
version=__version__,
description='foo bar',
long_description="https://github.com/foo/bar",
long_description_content_type='text/markdown',
author='foo bar',
author_email='foo@bar.com',
packages = find_packages(),
url='https://github.com/foo/bar',
entry_points={'console_scripts': ['foobar=cli.src.main:main']},
python_requires='>=3.6.0',
install_requires=REQUIRED,
include_package_data=True,
classifiers=[
"Topic :: Utilities"
]
)
Все, чего я пытаюсь достичь, это:
pip uninstall -y foobar # remove old installation
python setup.py build # build
python setup.py install # install
foobar # run the "cli.main:main"
Это приводит к следующей ошибке:
bash: /Users/myuser/.pyenv/shims/foobar: No such file or directory
Обновление # 1
Мой пакет определенно собирается и устанавливается. Потому что я вижу свою упаковку с я делаю pip freeze | grep foobar
. Это определенно там.
Обновление # 2
Мой пакет также может быть импортирован в оболочку Python следующим образом:
$ python
Python 3.6.8
Type "help", "copyright", "credits" or "license" for more information.
>>> import cli
>>> import cli.src
>>>
Здесь нет ошибок ^ укажите, мой импорт пакетов в порядке. Но я пытаюсь сделать мой пакет доступным прямо из cli
. Ввод foobar
должен непосредственно вызвать cli.src.main:main
, как описано в моем разделе entry_points
. Это, похоже, не работает.
Обновление № 3
$ which foobar
$ echo $?
1
Это говорит о том, что отображение для команды cli не определено. У меня нет вариантов сейчас: Должно быть, я где-то напутал в setup.py
... любые выводы будут полезны.