2016-11-10 2 views
0

Вот мой проект структура коды:Почему моя команда Python Click не работает?

pynique 
├── cli 
│   ├── __init__.py 
│   └── pynique_ops.py 
├── pynique 
│   ├── __init__.py 
├── README.md 
├── setup.cfg 
└── setup.py 

Мое setup.py содержания:

from setuptools import (
    find_packages, 
    setup 
) 
print find_packages() 

setup(
    name='pynique', 
    version='0.1.1.dev1', 
    description='pynique app', 
    classifiers=[ 
     'Development Status :: 2 - Pre-Alpha', 
     'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)' 
    ], 
    packages=find_packages(exclude=['tests']), 
    include_package_data=True, 
    install_requires=[ 
     'jinja2', 
     'PyYAML', 
     'Click' 
    ], 
    entry_points=''' 
     [console_scripts] 
     start-pynique=pynique.cli.pynique_ops:start 
    ''', 
) 

Я сделал это внутри pynique проекта папки верхнего уровня: - pip install -e .

Но мой start-pynique является не работает, это вызывает эту ошибку:

Traceback (most recent call last): 
    File "/home/agung/.virtualenvs/pynique/bin/start-pynique", line 11, in <module> 
    load_entry_point('pynique', 'console_scripts', 'start-pynique')() 
    File "/home/agung/.virtualenvs/pynique/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 542, in load_entry_point 
    return get_distribution(dist).load_entry_point(group, name) 
    File "/home/agung/.virtualenvs/pynique/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2569, in load_entry_point 
    return ep.load() 
    File "/home/agung/.virtualenvs/pynique/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2229, in load 
    return self.resolve() 
    File "/home/agung/.virtualenvs/pynique/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2235, in resolve 
    module = __import__(self.module_name, fromlist=['__name__'], level=0) 
ImportError: No module named cli.pynique_ops 
(pynique) 

Знаете ли вы, почему у него не было модуля с именем cli.pynique_ops? Что-то не так с моей setup.py?

ответ

0

Я наконец-то знаю исправление. Python setup.py install будет публиковать всю директорию внутри корневого каталога (pynique) в качестве имени пакета.

Так что, если бы я все еще использовал ту же структуру папок, что и заданный вопрос, cli, pynique будет установлен как пакет python. Итак, исправление должно быть таким: start-pynique=cli.pynique_ops:start.

Но, вместо того, чтобы использовать эту структуру папок, я изменить это будет так:

pynique 
├── pynique 
│   ├── cli 
│   │   ├── __init__.py 
│   │   ├── pynique_ops.py 
├── README.md 
├── setup.cfg 
├── setup.py 

Итак, я все еще могу использовать start-pynique=pynique.cli.pynique_ops:start как правильная установка.

 Смежные вопросы

  • Нет связанных вопросов^_^