Search code examples
pythonupwork-api

Upwork API Python library - ImportError: cannot import name 'client'


I have a problem when using Python Upwork library. It has been installed through PIP.

In ...\site-packages\upwork\ I created myAuth.py file.

The content of this file is so far:

apiKey = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
secretKey = 'XXXXXXXXXXXXXXXXXX'

import upwork

Here's traceback from cmd line:

C:\Python36-32\Lib\site-packages\upwork>python myAuth.py
Traceback (most recent call last):
  File "myAuth.py", line 4, in <module>
    import upwork
  File "C:\Python36-32\lib\site-packages\upwork\__init__.py", line 23, in <module>
    from upwork.client import Client
  File "C:\Python36-32\lib\site-packages\upwork\client.py", line 8, in <module>
    import urllib3
  File "C:\Python36-32\lib\site-packages\urllib3\__init__.py", line 8, in <module>
    from .connectionpool import (
  File "C:\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 11, in <module>
    from .exceptions import (
  File "C:\Python36-32\lib\site-packages\urllib3\exceptions.py", line 2, in <module>
    from .packages.six.moves.http_client import (
  File "C:\Python36-32\lib\site-packages\urllib3\packages\six.py", line 203, in
load_module
    mod = mod._resolve()
  File "C:\Python36-32\lib\site-packages\urllib3\packages\six.py", line 115, in
_resolve
    return _import_module(self.mod)
  File "C:\Python36-32\lib\site-packages\urllib3\packages\six.py", line 82, in _
import_module
    __import__(name)
  File "C:\Python36-32\Lib\site-packages\upwork\http.py", line 6, in <module>
    from compatibility import HTTPError, httplib
  File "C:\Python36-32\Lib\site-packages\upwork\compatibility.py", line 8, in <module>
    from http import client as httplib
ImportError: cannot import name 'client'

My Python version is 3.6.4. I tried to run code from 2.7.15, but it generated a different error earlier, so I will stick to 3.6.4.

Also, I've been getting one error earlier: ImportError: attempted relative import with no known parent package, but in file http.py I replaced:

from .compatibility import HTTPError, httplib

with:

from compatibility import HTTPError, httplib

and it works okay until current error.

I have never used Python before, but I failed trying to find a way to get API access in VBA and Python has an existing solution.


Solution

  • As mentioned in comments, place the myauth.py script not inside the upwork package folder (e.g. just try user homedir).

    The reason is, the site-packages/upwork folder defines the upwork package contents, so import upwork will not work from this location. In this way you are actually adding a upwork.myauth package.