Firebird embedded installation issue: library coul

2020-03-30 07:51发布

问题:

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.