我正在尝试设置一个venv在一个独立的python脚本中使用qgis处理算法。由于我使用的是sublime text,所以我创建了一个构建系统,并提供了使用qgis下载的python.exe文件的路径。在创建venv之后,我运行这个
from qgis.core import *
但是它抛出了一个错误,说PyQt5。QtCore模块不在那里。因此,我激活了venv并使用
命令安装了PyQt5。pip install PyQt5==5.15.3
。然后上面的行工作了,但是当我运行下面的代码
from qgis.core import *
import qgis.utils
抛出以下错误:RuntimeError: qgis。_gui无法从PyQt5导入类型'ufffdufffdufffdufffd ufffdufffd'。QtCore
也许单独安装PyQt5是一个坏主意,但由于第一个错误,我不得不。
我在Windows上,我需要在sublime text或jupyter notebook上运行它。请提供您所知道的任何来源或解决方案。提前谢谢你。
似乎不建议从pip安装PyQt5,因为显然QGIS已经带有特定的PyQt版本,这可能是冲突。我想这可能是你的问题。
我建议你看看另一个问题,你的问题解决了。
基本上你必须进入QGISbin
,在程序文件(默认)中找到qgis-bin.env
,打开它并将所有带下划线的环境变量复制到你的环境变量中作为系统变量。
我希望这对你有帮助,告诉你是否仍然有错误,并检查其他问题以获得进一步的信息,因为它是用图像一步一步解释的。
我终于找到了解决办法。我没有手动调整路径,而是在qgis中打开python控制台并运行以下行
import sys
print(sys.path)
我在脚本的开头将从上面的行得到的列表附加到系统路径中。下面是代码
import sys
paths = sys.path
qgispaths = ['C:/PROGRA~1/QGIS32~1.0/apps/qgis/./python', 'C:/Users/pamidiashoka/AppData/Roaming/QGIS/QGIS3\profiles\default/python', 'C:/Users/pamidiashoka/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins', 'C:/PROGRA~1/QGIS32~1.0/apps/qgis/./python/plugins', 'C:\Program Files\QGIS 3.26.0\apps\qgis\python', 'C:\Program Files\QGIS 3.26.0\apps\qgis\python\plugins', 'C:\Program Files\QGIS 3.26.0\apps\qt5\plugins', 'C:\Program Files\QGIS 3.26.0\apps\gdal', 'C:\Program Files\QGIS 3.26.0\apps\qt5\bin', 'C:\Users\pamidiashoka\Documents', 'C:\Program Files\QGIS 3.26.0\bin\python39.zip', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\DLLs', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib', 'C:\Program Files\QGIS 3.26.0\bin', 'C:\Users\pamidiashoka\AppData\Roaming\Python\Python39\site-packages', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages\win32', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages\win32\lib', 'C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages\Pythonwin', 'C:/Users/pamidiashoka/AppData/Roaming/QGIS/QGIS3\profiles\default/python', 'C:\Users/pamidiashoka/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\qgis2web', 'C:\Users\pamidiashoka\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins']
for i in range(len(qgispaths)):
if qgispaths[i] not in paths:
sys.path.append(qgispaths[i])
现在我可以导入所有的qgis模块和处理算法。
但是每当我运行一个至少有一个处理算法的脚本时,它就会抛出以下警告/消息
我不确定我是否应该关心它。但我可以做我想做的事。QTemporaryDir:无法删除"C: pamidiashoka AppData 用户本地 Temp python-XwLsCo"大多数可能是由于存在只读文件。