我试图用importlib动态导入PySide2,因为静态地使用import对我的应用程序来说是不够的。我需要importlib,因为最终它将与pyinstaller一起使用,以创建一个可以动态导入PySide2的可执行文件,而不仅仅是从单个可执行文件中导入。在
我复制了用pip下载的整个PySide2包目录。这个PySide2版本比我默认使用的版本要旧,当“PySide2”目录出现在我的源目录中时,我想改用它。在
根据this post中的答案,我有以下代码来执行导入:import os, sys
print("Import test")
if os.path.isdir('./PySide2/'):
print('Importing local PySide2')
import importlib.util
MODULE_PATH = "./PySide2/__init__.py"
MODULE_NAME = "PySide2"
spec = importlib.util.spec_from_file_location(MODULE_NAME, MODULE_PATH)
print("spec.name is " + str(spec.name))
module = importlib.util.module_from_spec(spec)
sys.modules[spec.name] = module
print(sys.modules)
spec.loader.exec_module(module)
print(PySide2.__version__)
else:
print('Importing system PySide2')
import PySide2
print(PySide2.__version__)
但是当我运行它时,我得到NameError: name 'PySide2' is not defined,即使我看到系统模块PySide2存在(在下面的输出中一直向右滚动以查看它是否存在):
^{pr2}$
我不明白为什么当它出现在系统模块. 在