首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >setuptools不包括我指定的任何子包。

setuptools不包括我指定的任何子包。
EN

Stack Overflow用户
提问于 2022-02-23 04:28:37
回答 2查看 857关注 0票数 1

我正在尝试为我用Click开发的CLI工具创建一个安装程序。问题是,由于某种原因,安装程序中没有包括子模块,这会导致以下错误:

代码语言:javascript
运行
复制
from modules.commands import modules
ModuleNotFoundError: No module named 'modules'

这是我的目录结构:

代码语言:javascript
运行
复制
.
├── LICENSE
├── README.md
├── setup.py
├── src
│   ├── app_config
│   │   ├── __init__.py
│   │   └── configuration.py
│   └── commands
│       ├── __init__.py
│       ├── config
│       │   ├── __init__.py
│       │   └── commands.py
│       ├── modules
│       │   ├── __init__.py
│       │   └── commands.py
│       └── cli.py
└── tests

cli.py引用在configmodules中创建的命令。当我直接运行cli.py时,它可以正常工作。但是,无论我尝试什么模式来让setup.py包含包,commands中的子模块都不包括在内。

这是setup.py的代码

代码语言:javascript
运行
复制
setup(
    name='cli',
    version='0.1.0',
    packages=find_packages(include=['src', 'src.*']),
    install_requires=[
        'Click'
    ],
    entry_points={
        'console_scripts': [
            'cli = src.commands.cli:cli'
        ]
    }
)

我已经检查了find_packages-implementation,但是我没有发现我指定上面所写内容的方式有什么问题。我也尝试过硬编码所有的包,但这也不起作用。我也尝试过使用src/*,因为它可能使用完整的文件,但这也不起作用。

编辑:的更多疑难解答

多亏了这个question,我才试着运行python -c "from setuptools import setup, find_packages; print(find_packages('src'))"。根据输出,它找到所有子模块:

代码语言:javascript
运行
复制
['app_config', 'commands', 'commands.config', 'commands.modules']

但是,当我更新我的设置以包含相同的值时,它会失败。

setup.py:

代码语言:javascript
运行
复制
setup(
    name='cli',
    version='0.1.0',
    packages=find_packages('src'),
    install_requires=[
        'Click'
    ],
    entry_points={
        'console_scripts': [
            'cli = src.commands.cli:cli'
        ]
    }
)

输出:

代码语言:javascript
运行
复制
  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
...
      error: package directory 'app_config' does not exist
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
EN

Stack Overflow用户

发布于 2022-03-20 21:30:37

我也有同样的问题。你的问题帮助我从这里找到答案:

我将graft src添加到我的manifest.in中,我将( setup.cfg中的选项) packages = find:更改为packages = find_namespace:

在我加入嫁接之前,我非常困惑。然后它可以在src的主目录下找到我的子包。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71231387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档