web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Automate / Running Python Scripts...
Power Automate
Unanswered

Running Python Scripts & Required Modules

(0) ShareShare
ReportReport
Posted on by 6

I've been using PAD for a few weeks now and am really liking it.  I've started to automate some things at work and have been using Python successfully until I started using scripts to query API's.  I first have to import requests, which gives me an error saying no module exists for requests.  When I point the Python script step to the path for the modules, I continue to get the same error.  I found the parent folder for requests is in site-packages, so I pointed it there, but it continues to complain about not having other modules.  I then created a new folder, copied the Python modules here and also put those from site-packages in the root here so everything is under the same directory.  However, this creates errors such as this:

 

File "C:\Users\Administrator\Documents\Modules\logging\__init__.py", line 1477
def exception(self, msg, *args, exc_info=True, **kwargs):
^
SyntaxError: unexpected token 'exc_info'

 

Not sure what to do here.  Has anyone else experienced this with Python modules and PAD?

I have the same question (0)
  • burque505 Profile Picture
    398 on at

    Might I ask if you have imported 'sys'? If not, try the code below and change the path to the folder where the Python modules now are.

     

     

    import sys
    sys.path.append(r"c:\Python27\Lib")

     

     

  • mavsuperman Profile Picture
    6 on at

    Thank you for the reply.  I added these 3 lines to the top of the script:

     

    import sys
    sys.path.append(r"C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib")
    sys.path.append(r"C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib\site-packages")

     

    However, I'm getting the same error from my original post 😞

  • burque505 Profile Picture
    398 on at

    If I'm not mistaken you'll need to install Python 2.7 somewhere and use those modules, not Python 3.*. My recommendation would be to install it to C:\Python27, and don't add it to your path. You may want to search for running different Python versions on the same machine. You can look at Install-Python-2-and-3-on-same-Computer , for instance. User hpenvy's post describes what I'm suggesting:

     

    Download the 2.7.7 installer package.
    Install it and, this time, do NOT accept the defaults. Specifically, remove the “Register Extensions” option from installing.

     

     

    You may see some other options - if you do, just make sure the installer DOES NOT update your Windows PATH environment variable. It might be a good idea to back that variable up just in case.

    Now you'll have a Python 2.7 installation that won't interfere with your 3.9, if it's done right. All you need this for is the path to the Python 2.7 modules.

  • mavsuperman Profile Picture
    6 on at

    I didn't necessarily need python 3.9 on this dev VM, so I removed it.  I installed Python 2.7 using the method listed.  I then adjusted the import sys paths to this:

     

    sys.path.append(r"C:\Python27\Lib")
    sys.path.append(r"C:\Python27\Lib\site-packages")

     

    I get a new error, but I suspect it's similar to the original issue:

     

    Traceback (most recent call last):
    File "<string>", line 16, in <module>
    File "C:\Python27\Lib\site-packages\requests\api.py", line 61, in request
    File "C:\Python27\Lib\site-packages\requests\sessions.py", line 528, in request
    File "C:\Python27\Lib\site-packages\requests\sessions.py", line 456, in prepare_request
    File "C:\Python27\Lib\site-packages\requests\models.py", line 382, in prepare_url
    File "C:\Python27\Lib\site-packages\urllib3\packages\six.py", line 951, in ensure_str
    File "C:\Python27\Lib\site-packages\requests\models.py", line 316, in prepare
    File "C:\Python27\Lib\site-packages\urllib3\util\url.py", line 381, in parse_url
    File "C:\Python27\Lib\site-packages\urllib3\util\url.py", line 296, in _normalize_host
    TypeError: not expecting type '<type 'bytes'>'

  • burque505 Profile Picture
    398 on at

    I suspect you're close to solving it.

    Are you free to post the Python code that throws the error? Does it work in Python 3?

    Without seeing any code this is only a guess, but for Python 2, you may be able to avoid the error by using

     

     

    response.content

     

     

    or maybe

     

     

    response.raw

     

     

    instead of

     

     

    response.text

     

     

    The error looks to me like the script is receiving an array of bytes instead of an expected string.

    This SO post may help.

     

    Also, remember the Python 2 requirement to prepend 'u' to Unicode strings. Here's some codegrepper.com code  to illustrate that:

     

    >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
    >>> r.status_code
    200
    >>> r.headers['content-type']
    'application/json; charset=utf8'
    >>> r.encoding
    'utf-8'
    >>> r.text
    u'{"type":"User"...'
    >>> r.json()
    {u'private_gists': 419, u'total_private_repos': 77, ...}

    You can also try (from your Python 2.7 installation)

    python -m pip install future

     

     

  • mavsuperman Profile Picture
    6 on at

    I removed some of the data, but here's the majority of it:

     

     

    import sys
    sys.path.append(r"C:\Python27\Lib")
    sys.path.append(r"C:\Python27\Lib\site-packages")
    import requests
    import json
    
    url = "removed"
    
    headers = {
     'Accept': 'application/json',
     'Content-Type': 'application/json',
     'Authorization': 'removed',
     'Cookie': 'removed'
    }
    
    response = requests.request("GET", url, headers=headers)
    #data = response.text
    #parsed = json.loads(data)
    
    data = json.loads(response.text)
    for d in data:
     print(d['profile']['manager'])

     

     

    I got most of this code from Postman when getting the API query to work.

     

    Thank you for your help!

  • burque505 Profile Picture
    398 on at

    The code will have to run in Python 2.7 before you can run it in PAD, of course.  In the code you posted, at the very least this statement should fail, as it's Python 3* syntax:

     

     

    print(d['profile']['manager'])

     

     

    But you could try putting this at the top of your script to see if it helps (and assuming either you've already installed 'future' via pip or that the 'future' module is supplied with your Python 2.7 installation, which is certainly possible and even likely):

     

    from __future__ import print_function

     

     

    Also, your error message shows a failure at line 16, which is probably this one:

     

     

    response = requests.request("GET", url, headers=headers)

     

     

    Regardless of whether I'm right or wrong about the above, you should try modifying your Python script directly from your Python 2.7 installation until you get it to work. If it doesn't work in PAD after that, then there's some inconsistency with IronPython.

     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Season of Sharing Community Challenge Winners!

Congratulations to our community stars!

Kudos to our 2025 Community Spotlight Honorees

Expanding mentorship, skilling, and AI innovation

Congratulations to the June Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Power Automate

#1
David_MA Profile Picture

David_MA 229 Super User 2026 Season 1

#2
11manish Profile Picture

11manish 227

#3
Haque Profile Picture

Haque 181

Last 30 days Overall leaderboard