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.py 与 my_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,则您的代码可能存在其他问题(特别是如果您正在进行任何类型的文本处理),所以我会确保您在他们期望的版本中测试您的代码!
我最近被要求在面试过程中交付一个 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.py 与 my_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,则您的代码可能存在其他问题(特别是如果您正在进行任何类型的文本处理),所以我会确保您在他们期望的版本中测试您的代码!