If I call "generateKey" from the script below, everything works fine and the keyfile will be generated. But if I call "cryptkey" the error No module named 'cryptography'
will occur.
import cryptography.fernet
def generateKey(keyfile : str):
key = cryptography.fernet.Fernet.generate_key()
with open (keyfile, "bw") as fp:
fp.write (key)
def cryptkey(stringData : str, keyfile : str) -> str:
symkey = None
with open (keyfile,"r") as fp:
symkey = fp.read()
crypter = cryptography.fernet.Fernet(symkey)
crypted_text = crypter.encrypt(stringData.encode())
return(crypted_text.decode())
I'm working in a virtual environment, with this modules installed:
(venv) E:\Projekte\...>pip list
Package Version
------------------ ---------
artifactory 0.1.17
certifi 2023.7.22
cffi 1.15.1
charset-normalizer 3.2.0
coverage 7.2.7
cryptography 41.0.3
idna 3.4
oracledb 1.3.2
pathlib 1.0.1
pip 23.2.1
pycparser 2.21
python-dateutil 2.8.2
requests 2.31.0
setuptools 65.5.0
six 1.16.0
urllib3 2.0.4
xmltodict 0.13.0
My python-version is
(venv) E:\Projekte\...>python --version
Python 3.10.11
What did I tried:
Commands and output:
(venv) E:\Projekte...>python -c "import keyFunctions.keyFunctions as kf; kf.generateKey('keyfile.txt')"
(venv) E:\Projekte...>python3 -c "import keyFunctions.keyFunctions as kf; print(kf.cryptkey('blubb', 'keyfile.txt'));"
Traceback (most recent call last): File "", line 1, in File "E:\Projekte...\keyFunctions\keyFunctions.py", line 1, in from cryptography import fernet ModuleNotFoundError: No module named 'cryptography'
The solution is really simple: the problem sits in front of the computer. It was the call of python3, which calls the python-executable outside the virtual environment, instead the python inside the venv. And because I'm not installing any modules in the global environment, the missing module couldn't be found!
Thx to @bereal