这是我的目录结构
-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
答案 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
确保在构造文件路径时使用正确的\
或/
,以便代码可以在任何平台上运行。