Ask a Question

Calling 3rd party packages from scripts written in Python

SOLVED
matju
Senior Member

Calling 3rd party packages from scripts written in Python

Hello,

 

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?

 

Best Regards,

matju

7 REPLIES 7
ghuff2
Contributor

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:

ImportError

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.

 
 
It is weird since i didn't use win32api, my script only import win32com.client
 
import win32com.client as win3
AlexKaras
Champion Level 2

Hi,

 

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?

Regards,
  /Alex [Community Champion]
____
[Community Champions] 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 Champions]
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 Champion] signature is assigned on quarterly basis and is used with permission by SmartBear Software.
https://community.smartbear.com/t5/Community-Champions/About-the-Community-Champions-Program/gpm-p/252662
================================

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.

cancel
Showing results for 
Search instead for 
Did you mean: