问题
I've been writing a small Python application that opens a Firebird database.
To achieve this goal I'm using Firebird embedded 2.5.7.27050, 64 bit.
Although, whenever I try to connect to the DB file with Python, I get the following error:
Traceback (most recent call last):
File "C:\Matteo\CMakeR\initApp.py", line 36, in <module>
connection = connectToDB(path)
File "C:\Matteo\CMakeR\initApp.py", line 10, in connectToDB
charset='WIN1252'
File "C:\Program Files\Python36\lib\site-packages\fdb\fbcore.py", line 682, in connect
load_api(fb_library_name)
File "C:\Program Files\Python36\lib\site-packages\fdb\fbcore.py", line 181, in load_api
setattr(sys.modules[__name__],'api',fbclient_API(fb_library_name))
File "C:\Program Files\Python36\lib\site-packages\fdb\ibase.py", line 1398, in __init__
raise Exception("The location of Firebird Client Library could not be determined.")
Exception: The location of Firebird Client Library could not be determined.
>>>
It seems that the FB Client is not installed properly.
However I followed very carefully the installation guide inside the doc folder.
Here's my app folder:
04/01/2018 15:11 <DIR> .
04/01/2018 15:11 <DIR> ..
04/01/2018 14:57 133 aliases.conf
03/01/2018 14:20 0 CMakeR.conf
02/01/2018 13:40 2.480 DB in chiaro.odb
04/01/2018 14:57 <DIR> doc
30/12/2017 17:32 191 editXLS.py
30/12/2017 17:24 23.032 Export.xlsx
04/01/2018 14:57 5.664.256 fbclient.dll
04/01/2018 14:57 5.664.256 fbembed.dll
04/01/2018 14:46 5.199.849 Firebird-2.5.7.27050-0_x64_embed.zip
04/01/2018 14:57 27.661 firebird.conf
04/01/2018 14:57 149.440 firebird.msg
04/01/2018 14:57 5.664.256 gds32.dll
04/01/2018 14:57 8.192 ib_util.dll
04/01/2018 14:57 1.558.016 icudt30.dll
04/01/2018 14:57 575.488 icuin30.dll
04/01/2018 14:57 935.936 icuuc30.dll
04/01/2018 14:57 26.023 IDPLicense.txt
04/01/2018 15:09 1.583 initApp.py
04/01/2018 14:57 <DIR> intl
04/01/2018 14:57 24.301 IPLicense.txt
04/01/2018 14:57 524 Microsoft.VC80.CRT.manifest
30/12/2017 17:24 28.625 Modulo CMR.xlsx
04/01/2018 14:57 1.097.728 msvcp80.dll
04/01/2018 14:57 822.784 msvcr80.dll
04/01/2018 14:57 2.333 Readme.txt
02/01/2018 13:40 50.790.400 testArchive.eft
04/01/2018 14:57 <DIR> udf
回答1:
Thank you all for helping me solve this issue.
I finally found a solution thanks to Arioch 'The's suggestion.
Using Microsoft Process Monitor I was able to detect the folders where my app was looking for the client library. Then I noticed that they were the same folders specified in the PATH environment variable.
So I added the folder containing my Python file to the PATH variable and everything finally worked out.
回答2:
I use embedded FB from .NET but still, I keep the firebird.msg file in the same folder as the app. And the intl & udf folders are not nested in FBE or some folder. I'd say that you set the folder to FBE and it's looking for the binaries there too. That also seems like what the layout is supposed to look like.
来源:https://stackoverflow.com/questions/48035341/firebird-embedded-installation-issue-library-could-not-be-determined