Calling 3rd party packages from scripts written in Python
I'm trying to import external 3rd party packages from my scripts written in Python language. Is there a way to use Python installed in different folder? I was trying to use default "site-packages" folder - I added 3rd party package to the folder, also copied whole content, installed it from commad line (by using PIP) and tried to call it from script, but TestComplete shows: "no module named requests".
I wrote in script also:
from os import sys sys.path.append("C:\Data\Python\Lib\site-packages")
and then try to import 3rd party module, but there's also no effect. I don't want to use PyUnit, so is there any way to load 3rd party package in TestComplete in scripts?
Solved! Go to Solution.
TestComplete installs it's own python instance so the third-party package in the site-packages folder won't work. If you copy the third-party package you want from the site-packages into the TestComplete python folder it will work.
For example I use the pytz and tzlocal packages. After installing through pip, I copied those folders from the site-packages folder into C:\Program Files\SmartBear\TestComplete 11\Bin\Extensions\Python\Python34\Lib . Then just import like regular and it should work.
I think you could also add the site-packages folder to the sys path like you are in your code, I think the mistake you are making is not escaping the backslash character in your string or using a raw string. So it should be sys.path.append("C:\\Data\\Python\\Lib\\site-packages") or sys.path.append(r"C:\Data\Python\Lib\site-packages")
But i still encounter error:
No module named 'win32com'
i have copy site-packages from C:\Program Files (x86)\Python36-32\Lib\site-packages to C:\Program Files (x86)\SmartBear\TestComplete 12\Bin\Extensions\Python\Python34\Lib\site-packages
but seem not working. when i try to import:
import win32com.client as win32
Did you copy your entire site-packages folder or just the win32com folder? You don't want the whole site-packages folder, only the folder of the third party package should go in the Lib folder, i.e. only copy the win32com folder into Lib, not entire site-packages.
Thanks, i copied the win32com folder to Lib only now. but another error pops when i run the script
ImportError No module named 'win32api'
Error location: Unit: "HorizonTestSuite\HorizonAutoTest\Script\genfuncs"
Line: 7 Column: 1.
I'm not a Python guy and don't have TC at hand as we speak, so just a wild guess: I believe that win32api is referenced from win32com module. Have you checked if there is win32api folder within site-packages one and have you copied it to lib\ folder for TestComplete?
/Alex [Community Hero]
[Community Heroes] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Heroes]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Hero] signature is used with permission by SmartBear Software.
Thank you. Still not work. Anyway, i've tried use OLE now. Need re-write my code.
You need to copy all related folders from site-packages to Lib folder as suggested. You can check by date and time you installed your win32. Unless all related folder copy, you will see those type of errors.