【问题标题】:Python pip install: error: package directory 'b' does not existPython pip install:错误:包目录'b'不存在
【发布时间】:2019-09-05 08:39:57
【问题描述】:

我正在为我的关于 python 包分发的论文做一个简单的概念证明示例。我被困在我想安装一个简单包的例子上。

文件夹和文件布局如下:

baseApp/
├── baseApp
│   ├── app.py
│   └── __init__.py
├── __init__.py
└── setup.py

文件setup.py 包含:

from setuptools import setup, find_packages

setup(
    name='BaseApp',
    version='1.0',
    packages="baseApp",
    entry_points={
        'console_scripts': [
            'baseApp=baseApp.app:main '
        ]
    }
)

文件app.py 是一个功能简单的文件:

def main():
    print("main function")

我的想法是使用pip 安装这个包,但运行pip install ./baseApp 总是给出错误消息:

running install
running bdist_egg
running egg_info
creating BaseApp.egg-info
writing BaseApp.egg-info/PKG-INFO
writing dependency_links to BaseApp.egg-info/depjjjendency_links.txt
writing entry points to BaseApp.egg-info/entry_points.txt
writing top-level names to BaseApp.egg-info/top_level.txt
writing manifest file 'BaseApp.egg-info/SOURCES.txt'
error: package directory 'b' does not exist

即使尝试导航到文件夹然后运行 ​​python setup.py install 也会给我同样的错误。最困扰我的是我不明白错误消息试图对我说什么。我没有看到任何名为b 的目录,也没有看到为什么会有一个。

我也尝试使用虚拟环境和系统分发,但都导致相同的错误消息。

我的问题是什么导致了这种行为,有什么简单的方法可以解决它还是我遗漏了什么?

【问题讨论】:

  • 试试packages=["baseApp"],我很确定这应该是一个列表。
  • @Tomalak 谢谢!它解决了它。
  • 背景:当需要一个列表并且您给出一个字符串时,Python 将该字符串视为(字母)列表。所以在你的情况下,它会被视为packages=['b', 'a', 's', 'e', 'A', 'p', 'p'],这解释了你看到的错误。
  • 既然我们正在研究它,我认为它甚至还有更多的算法,因为输出到文件top_level.txtA a b e p s,它实际上包含了构成单词@ 所需的所有字母987654335@ 按字母顺序排序。我怀疑它,因为它很奇怪,但我认为它与它无关。现在文件中只包含baseApp
  • 是的,我想它会在内部对包列表进行重复数据删除,以防止不必要的包含。它最终排序是重复数据删除的副作用。

标签: python pip setup.py


【解决方案1】:

在我的情况下,我遇到了同样的问题,因为软件包没有完全安装,所以我再次安装了它,然后一切顺利

【讨论】:

  • 我尝试了多次安装和卸载,但没有成功。通过使packages 条目成为列表来解决它
猜你喜欢
  • 2012-09-24
  • 2014-10-09
  • 2018-12-31
  • 2015-02-03
  • 1970-01-01
  • 2012-07-17
  • 2021-01-30
  • 1970-01-01
相关资源
最近更新 更多