Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何跨文件结构导入类和文件__初始混淆_Python_Python 3.x_Python Import - Fatal编程技术网

Python 如何跨文件结构导入类和文件__初始混淆

Python 如何跨文件结构导入类和文件__初始混淆,python,python-3.x,python-import,Python,Python 3.x,Python Import,我搞不懂这些进口货。除了1个,我的所有文件都在文件结构的最深层工作 文件结构为: | rootDir |--- file1.py (main.py) |--- appDir |------ schema1Dir |--------- file2.py (etlProcess.py) |--------- file3.py (recordTable.py) |------ schema2Dir |--------- ... |------ ... 我被困的地方: file2.py试图从同一目录

我搞不懂这些进口货。除了1个,我的所有文件都在文件结构的最深层工作

文件结构为:

| rootDir
|--- file1.py (main.py)
|--- appDir
|------ schema1Dir
|--------- file2.py (etlProcess.py)
|--------- file3.py (recordTable.py)
|------ schema2Dir
|--------- ... 
|------ ...
我被困的地方:

file2.py试图从同一目录导入file3.py,以便触发该文件中的类。我发现了一个错误

没有名为“file3”的模块

我尝试过在每个目录中包含_uinit__u;.py文件,完全删除这些文件,只将这些文件放在某些目录中,等等。我在谷歌搜索中找到的所有解决方案,但我无法实现

这是一个VS代码的截图,可以更好地显示这一点


Python导入始终与运行Python解释器的目录相关,在您的情况下,该目录是~/projects/companynurse/busterEtl的源根目录,因此为了让etlProcess.py导入recordTable.py,它应该使用绝对导入和完整的包路径:

from application.facilities import recordTable
或者和一个字母一起使用。要在同一目录中显式定位recordTable.py,请执行以下操作:

from . import recordTable

我没有尝试阅读屏幕截图,但从错误消息中我得出结论,您需要使用import file3,而不是import file3.py。此外,我尝试将该类作为“从recordTable import facilities”导入,但得到的错误与我没有使用.py调用的错误相同,但愿我能这么做,尽管哈森你写的不是错误消息的内容。请包含准确的错误消息,回溯为文本,而不是屏幕截图。修复了要删除的错误。py@TimHalbert:第二次后期编辑绝对是合法的语法,除非您的IDE太旧,以至于试图使用Python pre-edit的2.7之前版本运行代码,否则这是错误的。如果您的软件包实际安装在某个地方,或者您的工作目录实际上是包含应用程序的目录,则前者应该可以工作,但如果您只是在开发树中随意运行Python,则前者将无法正常工作。@blhsing:\uuu init\uuuuu.py在Python 3中完全不需要,这要感谢,而且事实上,如果没有有意义的代码放入其中,建议您不要这样做,将其保留为命名空间包,以便单独安装可以轻松共享命名空间,而无需在两个包的_init__; py中使用显式解决方法来启用它。唯一依赖于它的是setuptools.find_包,但这就是为什么他们引入了setuptools.find_namespace_包,以查找包含Python文件的目录,无论是否包含uuu init_uuu.py.Ok,我现在得到了完全更改的错误,不确定是否正确,所以是否继续在这里执行它,或not@TimHalbert:试着自己解决一点新的错误,这是最好的学习方法;如果你不能,问一个新问题,让这一个单独在问题得到充分回答后更改问题,会使现有的答案对未来的提问者毫无用处。请注意,相对路径有效,但VS代码将其显示为错误,第一个解决方案完全有效,我的错误转移到了一个从可记录文件内部调用的函数