Python 导入模块问题

Python import modules issue

我最近被要求在面试过程中交付一个 python 项目。 我在 Windows 和 MacOSX 上用 Pycharm、Spyder、jupyter notebook 和命令行测试了我的项目,一切正常。

但是,根据他的说法,由于模块导入问题,审阅者无法让项目在他这边工作。

我的模块是这样组织的:

my_project/
  my_module.py
  main_module.py
  my_package/
    __init__.py
    my_submodule_1.py
    my_submodule_2.py

my_submodule_1.py:

import my_module
import my_submodule_2

我没有在 PYTHONPATH 中添加任何与此项目相关的路径。 项目主要功能位于main_module.py。 审稿人似乎对 my_submodule_1.py.

中导入的模块有问题

谁能阐明这里可能出现的错误以及为什么它对我有效而不对他有效?

我认为因为 my_module.pymy_submodule1.py不在同一目录 ,而在审阅者电脑上 sys.path 没有 my_module.py 的那个位置,那是为什么从其父目录导入模块时出现问题。

如果您提供审阅者遇到的错误的详细信息,可能有助于找到正确的解决方案。

您的 my_submodule_1 模块在直接导入 my_submodule_2 时正在进行隐式相对导入。

这在 Python 3 中是不合法的。 在 Python 2 中是允许的,尽管使用它通常是个坏主意。您可以通过将 from __future__ import absolute_import 放在文件中其他导入语句的上方来获得 Python 3 语义。要修复导入,您需要将 import my_submodule_2 更改为 import my_package.my_submodule_2(绝对导入)或 from . import my_submodule2(显式相对导入)。

如果您的面试官使用的是 Python 3 而您使用的是 Python 2,则您的代码可能存在其他问题(特别是如果您正在进行任何类型的文本处理),所以我会确保您在他们期望的版本中测试您的代码!