从其他目录中的文件导入python函数,该文件依赖于另一个文件

时间:2016-01-21 07:39:46

标签: python-3.x pyqt4

这是我的目录结构

-directory1
  |-currentlyWritingCode
-directory2
  |-__init__.py
  |-helper.py
  |-view.ui

helper.py是来自pyqt4框架的UI。它需要view.ui文件。 它有以下代码来加载ui数据

viewBase, viewForm = uic.loadUiType("view.ui")

现在在目录编写代码的directory1中我做了这个

import directory2.helper

当我在currentWritingCode中运行代码时,它会抛出错误

FileNotFoundError: [Errno 2] No such file or directory: 'view.ui'

现在该怎么办?

在Centos 7上使用anaconda的python3.5

1 个答案:

答案 0 :(得分:1)

使用os.path.join(os.path.dirname(os.path.realpath(__file__)),'view.ui')代替view.ui。这将确保您正确引用python文件所在的文件夹,而不管导入它的代码。

注意:确保您拥有import os其他导入产品。

这是如何工作的?

__file__是您要导入的模块的属性。它包含模块文件的路径。见this answer。但是,这条路径不一定是绝对路径。 os.path.realpath返回绝对路径(如果有的话,它甚至会跟在symlinks之后)。此时我们有一个完整的模块路径,所以我们采用目录路径(os.path.dirname)并将其与原始文件名(我们假设相对于原始模块,因此应该在上述目录)。 os.path.join确保在构造文件路径时使用正确的\/,以便代码可以在任何平台上运行。