2016-11-10 106 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爲有效設置。

相關問題