导入仅在使用--editable pip标志安装模块时有效

时间:2017-04-15 20:17:54

标签: python python-3.x pip virtualenv setuptools

this project on github允许我更轻松地做一些jekyll动作。

当我克隆并将其安装到我的virtualenvpip install virtualenv .)时,它运行正常,但如果我只是安装而不是 --editable标记我得到当我尝试使用click公开的命令时出现这些错误:

$ jk-config-set-editor Traceback (most recent call last):
File "/home/felipe/jekyll-utils/jekyll-venv/bin/jk-config-set-editor", line 7, in <module>
from jekyllutils.configs import set_editor
ImportError: No module named 'jekyllutils'

This is my setup.py file:

from setuptools import setup

setup(
        name="jekyllutils",
        version='0.1',
        py_modules=['generators'],
        install_requires=[
            'click',
            'python-slugify',
            'appdirs',
            'toml'
        ],
        entry_points='''
        [console_scripts]
        jk-new = jekyllutils.generators:new_post
        jk-edit = jekyllutils.managers:edit_post
        jk-config-set-editor = jekyllutils.configs:set_editor
        jk-config-set-posts-path = jekyllutils.configs:set_path_to_posts_dir
        jk-config-dump-configs = jekyllutils.configs:dump_configs
        jk-config-clear-configs = jekyllutils.configs:clear_configs
    '''

)

任何人都知道为什么当--editable开启时这是有效的?

1 个答案:

答案 0 :(得分:0)

万一遇到同样的问题,对我有用的是使用find_packages函数在setup.py中定义我的软件包

我还必须使用package_data字段定义静态数据文件。

from setuptools import setup, find_packages

setup(
        name="jekyllutils",
        version='0.1',
        py_modules=['generators'],
        install_requires=[
            'click',
            'python-slugify',
            'appdirs',
            'toml'
        ],
        entry_points='''
            [console_scripts]
            jk-new = jekyllutils.generators:new_post
            jk-edit = jekyllutils.managers:edit_post
            jk-config-set-editor = jekyllutils.configs:set_editor
            jk-config-set-posts-path = jekyllutils.configs:set_path_to_posts_dir
            jk-config-dump-configs = jekyllutils.configs:dump_configs
            jk-config-clear-configs = jekyllutils.configs:clear_configs
        ''',
        packages=find_packages(),
        package_data={
            "": ["*.txt", "*.json", "*.csv", "*.html"],
        },

)