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

Fel*_*ida 5 python pip setuptools virtualenv python-3.x

在 github 上有这个项目,它允许我更轻松地执行一些 jekyll 操作。

当我克隆它并将其安装到我的virtualenv( pip 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'
Run Code Online (Sandbox Code Playgroud)

这是我的setup.py文件:

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
    '''

)
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么它在--editable打开时有效,但在其他情况下不起作用?

小智 2

万一遇到同样的问题,对我有用的是使用该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"],
        },

)
Run Code Online (Sandbox Code Playgroud)