[2.0.4] Jython scripting: import Python (pip installed) module like a fake data generator (fake-data)

Asked by Nick on 2020-12-06

Using manual I added the path to Python site-packages

- make a folder Lib/site-packages in your SikulixAppData folder
- add a file sites.txt into that folder
- in the file have a line containing the absolute path to your Python site-packages folder
- restart the IDE

But I have an error:

[error] script [ 10000messages ] stopped with error in line 12
[error] TypeError ( find_module() takes exactly 3 arguments (2 given) )
[error] --- Traceback --- error source first
line: module ( function ) statement
489: pkgutil ( find_loader ) TypeError: find_module() takes exactly 3 arguments (2 given)
594: pkgutil ( get_data ) File "C:\Users\druid\AppData\Roaming\Sikulix\Extensions\jython-standalone-2.7.1.jar\Lib\pkgutil.py", line 478, in get_loader
6: __init__ ( <module> ) _replaces = pkgutil.get_data(__name__, 'data.bin').decode('utf8').split('\x00')
37: __init__ ( import_module ) File "C:\Python27\lib\site-packages\faker\providers\internet\__init__.py", line 6, in <module>
45: loading ( find_available_locales ) provider_module = import_module(provider_path)
15: config ( <module> ) AVAILABLE_LOCALES = find_available_locales(PROVIDERS)
11: factory ( <module> ) from faker.config import AVAILABLE_LOCALES, DEFAULT_LOCALE, PROVIDERS
1: __init__ ( <module> ) from faker.factor
y import Factory # noqa F401
12: main ( <module> ) from faker import Faker
[error] --- Traceback --- end --------------

Code:

from faker import Faker
faker = Faker()
...
paste(faker.text());
...

Question information

Language:
English Edit question
Status:
Solved
For:
Sikuli Edit question
Assignee:
No assignee Edit question
Solved by:
RaiMan
Solved:
2020-12-07
Last query:
2020-12-07
Last reply:
2020-12-07
Best RaiMan (raimund-hocke) said : #3

apparently, the Python module pkgutil (used inside faker) is not compatible with Jython 2.7.1

Python modules, that are itself written completely in Python language level 2.7, but rely on the Python eco-system, might not work in the Jython environment.

I have no idea for a solution, besides running the Python stuff in a Python subprocess and exchange data with files.
This is an option, if the thing is not time critical.

Nick (3rdunknown) said : #4

@RaiMan thanks for your fast answer.

I found another PIP fake data generator that works very good "fake-data"
https://github.com/sebastien/fake

Nick (3rdunknown) said : #5

Thanks RaiMan, that solved my question.

RaiMan (raimund-hocke) said : #6

thanks for feedback