我最近被要求提供一个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.
任何人都可以对这里可能出现的错误有所了解吗?为什么它会在我这边而不是在他身上发挥作用呢?
答案 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确保您在他们期望的版本中测试您的代码!