Python导入模块问题

时间:2018-04-03 10:56:15

标签: python python-import python-module

我最近被要求提供一个python项目作为面试过程的一部分。 我在Windows和MacOSX上使用Pycharm,Spyder,jupyter笔记本和命令行测试了我的项目,一切正常。

然而,由于他所说的模块导入问题,审稿人无法让项目在他身边工作。

我的模块组织如下:

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.

中导入的模块存在问题

任何人都可以对这里可能出现的错误有所了解吗?为什么它会在我这边而不是在他身上发挥作用呢?

2 个答案:

答案 0 :(得分:0)

我认为,因为 my_module.py my_submodule1.py 不在同一目录,并且在审核者电脑上 sys .path 没有 my_module.py 的位置,这就是从父目录导入模块时出现问题的原因。

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

答案 1 :(得分:0)

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

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

如果您的采访者使用的是Python 3并且您使用的是Python 2,那么您的代码可能会出现其他问题(特别是如果您正在进行任何类型的文本处理),所以我&#39 ; d确保您在他们期望的版本中测试您的代码!