为什么Python在不同的计算机上有不同的相对导入问题[duplicate]

mwngjboj  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(133)
    • 此问题在此处已有答案**:

(31个答案)
Importing installed package from script with the same name raises "AttributeError: module has no attribute" or an ImportError or NameError(2个答案)
13小时前关门了。
我正在使用python,我创建了一个简单的方法来编写HTML和输出文件。我在2台计算机上开发了这个模块,其中在主计算机上,我可以根据目录树使用以下命令:

Pypertext:
   html.py
   widget.py
   htmlHeader.py
   htmlTitle.py
   htmlButton.py

这是可使用以下命令导入的模块的文件夹:

from pyperclip.htmlHeader import Header

虽然在htmlHeader.py中我有以下导入:

from widget import baseWidget

这在我的计算机上运行良好,但当我转到辅助计算机时,我得到一个错误,我通过以下方法修复:

from .widget import baseWidget

在我的主计算机上,我得到了一个尝试相对导入的错误,我觉得在模块脚本中,它不应该有很多try except语句来使它工作。

njthzxwz

njthzxwz1#

Python的导入依赖于很多外部因素,包括你当前的工作目录,你如何运行你的程序,sys.path,你安装的其他库可能会自动加载。
我以前也遇到过类似的问题,所以我创建了ultraimport,它给程序员更多的导入控制权,让你可以基于文件系统进行导入。
htmlHeader.py中,您可以写入:

import ultraimport
baseWidget = ultraimport('__dir__/widget.py', 'baseWidget')

这将始终工作,在您的两台计算机上,独立于所有外部因素。

相关问题