本地有一个万德金融终端,他的 API 是通过 WindPy.pth 安装的。
我将这个文件添加到资源目录,然后使用以下代码自定义模块搜索路径
import os, sys, site
site.addsitedir(os.path.dirname(package.resources.get_path("WindPy.pth")))
print(sys.path)
import WindPy from w在打印的 sys.path 中已经可以看到 WindPy.pth 中的目录路径,但是导入时报错:
[Errno 2] No such file or directory: '...\\AppData\\Local\\ShadowBot\\users\\...\\apps\\...\\venv\\lib\\site-packages\\WindPy.pth'
Traceback (most recent call last):
File "C:\Tools\RPA\ShadowBot\shadowbot-5.15.52\python\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "C:\Tools\RPA\ShadowBot\shadowbot-5.15.52\python\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Tools\RPA\ShadowBot\shadowbot-5.15.52\python\lib\site-packages\xbot_interpreter.py", line 113, in <module>
main()
File "C:\Tools\RPA\ShadowBot\shadowbot-5.15.52\python\lib\site-packages\xbot_interpreter.py", line 53, in main
mod = importlib.import_module(robot_inputs['mod'])
File "C:\Tools\RPA\ShadowBot\shadowbot-5.15.52\python\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "...\AppData\Local\ShadowBot\users\...\apps\...\xbot_robot\wind_collection.py", line 19, in <module>
from WindPy import w
File "C:\Tools\Wind\Wind.NET.Client\WindNET\x64\WindPy.py", line 150, in <module>
class w:
File "C:\Tools\Wind\Wind.NET.Client\WindNET\x64\WindPy.py", line 172, in w
pathfile=open(sitepath)
FileNotFoundError: [Errno 2] No such file or directory: '...\\AppData\\Local\\ShadowBot\\users\\...\\apps\\...\\venv\\lib\\site-packages\\WindPy.pth'不知道为什么总是到这个路径下去找 WindPy.pth。
还尝试过 sys.path.append("C:\\Tools\\Wind\\Wind.NET.Client\\WindNET\\x64") 同样不起作用。
我目前的解决方案是将 WindPy.pth 复制到报错信息中的目录里:
...\AppData\Local\ShadowBot\users\...\apps\...\venv\Lib\site-packages这样解决有点麻烦,为什么自定义模块搜索路径不起作用呢?如果能增加添加 .pth 文件的功能就好了。