绝对导入在Python 3.7中不起作用

凯文·桑切斯·拉克鲁瓦

我有这样的目录设置

Project
   |
   |folder1
   |  |folder2
   |  |  |Script_A.py
   |
   |folder3
   |  |Script_B.py

我试图访问一个名为类ClassB的居住在Script_B.pyScript_A.py在Python 3.7。我正在尝试使用绝对导入来实现这一点。这是Script_A.py的内容:

from folder3.Script_B import ClassB

似乎有些我想念的东西。我不明白Script_A应该如何知道Script_B甚至文件夹folder3甚至Project的存在是什么告诉python查找这些文件夹?

我已经阅读了PEP328,但没有回答我的任何问题。

Prayson W. Daniel

我会使用__init__.py,只是一个空文件,将文件夹转换为模块:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
        subpackage2_1/
              __init___.py
              deep_module.py
module_test.py

这将允许(在module_test.py

from package.subpackage2.subpackage2_1 import deep_module

如果deep_module有一个Foo类

# deep_module.py
class Foo: pass

我们可以将Foo导入为

from package.subpackage2.subpackage2_1.deep_module import Foo

我不推荐这种导入,因为它们很难调试。

您可以这样做:

from package.subpackage2.subpackage2_1 import deep_module

# it helps to know where class is coming from
foo = deep_module.Foo()

这比直接导入Foo更好,但是出于可读性考虑,我仍然会尽量避免使用它;)

如果调用是在软件包目录中进行的,则

from subpackage2.subpackage2_1 import deep_module

或这样,它将随处可见

# terrible hack is to add your package to your sys path
import sys
sys.path.insert(0,'path_to_package')

from package.subpackage2.subpackage2_1 import deep_module

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ipython3在python3.7的终端中不起作用

Python 3中的相对导入不起作用

python 3 suds缓存不起作用

如何在Python 3中使用绝对导入来导入位于其父目录中的包?

绝对导入不起作用,但相对导入可以

config.from_object在Python 3中的Flask中不起作用

python中的绝对导入不起作用,相对导入起作用

从包中的脚本进行Python 3绝对导入的问题

为什么我的reverse()方法在python 3中不起作用?

为什么我的日志记录在Python 3中不起作用?

Python计划模块在Python 3中不起作用

在其他函数中声明的变量在主python 3中不起作用?

TreeView在Python Gtk3中不起作用

导入后,模块who在Python 3中也不起作用

如何在绝对导入中设置不带点号的Pypi软件包-Python3

pwntools Python模块在python2中不起作用,但在python3中起作用

为什么“请求”模块超时在python3中不起作用?

Python 3.X Pandas中的简单IF语句不起作用

python3-cd在反向shell中不起作用

python3 grpc编译器:如何处理.protos中的绝对和相对导入?

在Python 3中比较字典中的值不起作用?

为什么相对导入在Python 3中不起作用?

python 3导入不起作用

PYTHON_TARGETS中的python3_5在Gentoo中不起作用?

Python3请求-不起作用

在python2中可以,但是在python3中不起作用

HyperVolume函数在Python 3中不起作用

Python 3:从文件中读取文本时,Regex不起作用

日志在 Python 3 中的 Flask 下不起作用

TOP 榜单

热门标签

归档