gpt4 book ai didi

python - 使用easy_install安装egg后,导入模块时出现ImportError

转载 作者:行者123 更新时间:2023-12-04 17:52:02 25 4
gpt4 key购买 nike

我们制作了 2 个 Python 应用程序,它们以egg 文件的形式分发。多年来,我们一直在 Python 2.5.4 下生成它们,但现在正在将它们都升级到 2.7.13。在此过程中,2 个应用程序中的 1 个在 2.7.13 上安装后现在表现出奇怪的行为。

当我使用 easy_install.exe 安装鸡蛋时,它似乎在我所知道的各个方面都是成功的。但是,当我尝试在 Python 命令行中导入模块时,出现 ImportError。

这个问题有很多奇怪的地方:

  • 这只发生在 Windows 上——这两个应用程序都在 Linux 上安装和运行良好
  • 这仅发生在我们的 2 个程序中的 1 个程序中——另一个程序在任何地方都运行良好
  • 在 Windows 上有问题的安装过程中,easy_install 完全没有提示
  • 当我执行“import sys/print sys.path”时,鸡蛋确实出现在路径中
  • 鸡蛋确实出现在 site_packages
  • 的第 p 个包列表中
  • 我正在以 Windows 管理员身份进行整个安装和测试,所以我认为可能不会出现权限问题
  • 当从 2.5 升级到 2.7
  • 时,我们没有对任一程序的源代码或 setup.py 进行任何更改。
  • 安装没什么特别的——没有虚拟环境,只是全局安装到 site_packages

  • 这是失败的鸡蛋的 setup.py(模块名称更改为 foo 以保护无辜者):
    from setuptools import setup

    setup(name='foo',
    description='Foo Module',
    packages=['foo'],
    entry_points = {
    'console_scripts': [
    'foo = foo.foo:main',
    ],
    },
    )

    这是工作蛋的 setup.py:
    from setuptools import setup

    setup(name='bar',
    description='Bar Tool',
    packages=['bar', 'bar.hexes', 'bar.barlib'],
    entry_points = {
    'console_scripts': [
    'bar = bar.main:main',
    ],
    },
    )

    由于直到我尝试导入模块时才发现任何问题,我该如何调试这个问题?

    目前我的主要嫌疑人是 setup.py 的 console_scripts 部分中的 foo.foo 引用。这听起来有点类似于@joest 在 this problem 中给出的答案.

    最佳答案

    无法导入 foo 模块,因为没有 __init__.py在鸡蛋中。出于我仍然不完全理解的原因,我们的 x64 构建机器在创建鸡蛋期间自动生成该文件(您将看到 Creating missing __init__.py for foo 消息),而 x86 构建机器跳过该步骤并生成一个 splinter 的鸡蛋。考虑到我们在构建这个蛋的过程中构建了 Python 本身和所有必要的模块,我看不出行为会有何不同,但确实如此。

    我刚刚创建了一个空白 __init__.py在 foo 源目录中,现在鸡蛋总是正确构建和导入。

    关于python - 使用easy_install安装egg后,导入模块时出现ImportError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43892012/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com