Компоновщик C# не может найти общую библиотеку python в Ubuntu 18.04 в программе Keras. NET - PullRequest
0 голосов
/ 05 марта 2020

Я довольно новичок в использовании C# (исходят из ac / c ++ фона) и пытался разработать C# приложение машинного обучения с использованием Keras. NET (https://github.com/reneschulte/Keras.NET) , Используя терминал, предоставленный в VS Code, я добавил пакет Keras. NET в свой файл .csproj, используя команды dotnet add package вместе с пакетами, которые использует веб-страница Keras. NET (ie *). 1037 *. NET (с использованием Numpy .Bare), pythonnet_netstandard и Tensorflow. NET). Я также установил python 3.7.3.

Я использую Ubuntu 18.04 в качестве своей ОС и VS Code в качестве своей IDE. Я пытался заставить работать простую нейронную сеть с использованием набора данных MNIST, но столкнулся с проблемой времени выполнения при использовании dotnet run:

Unhandled Exception: System.DllNotFoundException: Unable to load shared library 'python37' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libpython37: cannot open shared object file: No such file or directory

Я копался в компьютере чтобы выяснить, где были мои библиотеки python 3.7, и найти то, что, по-моему, компоновщик ищет здесь в ~ / usr / local / lib (а в ~ ~ не было файлов python 3.7.so). /usr/lib).

Location of Python 3.7 shared objects

Поэтому, чтобы компоновщик искал нужные места, я добавил путь к пути поиска библиотеки линкеров, используя:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/ на моем терминале VS Code

Наконец я использовал LD_DEBUG, чтобы узнать, где компоновщик искал библиотеку python37, и это было в выходном файле LD_DEBUG:

      9035:  search path=tls/haswell/x86_64:tls/haswell:tls/x86_64:tls:haswell/x86_64:haswell:x86_64::/usr/local/lib        (LD_LIBRARY_PATH)
      9035:   trying file=tls/haswell/x86_64/python37.so
      9035:   trying file=tls/haswell/python37.so
      9035:   trying file=tls/x86_64/python37.so
      9035:   trying file=tls/python37.so
      9035:   trying file=haswell/x86_64/python37.so
      9035:   trying file=haswell/python37.so
      9035:   trying file=x86_64/python37.so
      9035:   trying file=python37.so
      9035:   trying file=/usr/local/lib/python37.so
      9035:  search cache=/etc/ld.so.cache
      9035:  search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib        (system search path)
      9035:   trying file=/lib/x86_64-linux-gnu/python37.so
      9035:   trying file=/usr/lib/x86_64-linux-gnu/tls/python37.so
      9035:   trying file=/usr/lib/x86_64-linux-gnu/python37.so
      9035:   trying file=/lib/python37.so
      9035:   trying file=/usr/lib/python37.so
      9035: 
      9035: find library=libpython37.so [0]; searching
      9035:  search path=tls/haswell/x86_64:tls/haswell:tls/x86_64:tls:haswell/x86_64:haswell:x86_64::/usr/local/lib        (LD_LIBRARY_PATH)
      9035:   trying file=tls/haswell/x86_64/libpython37.so
      9035:   trying file=tls/haswell/libpython37.so
      9035:   trying file=tls/x86_64/libpython37.so
      9035:   trying file=tls/libpython37.so
      9035:   trying file=haswell/x86_64/libpython37.so
      9035:   trying file=haswell/libpython37.so
      9035:   trying file=x86_64/libpython37.so
      9035:   trying file=libpython37.so
      9035:   trying file=/usr/local/lib/libpython37.so
      9035:  search cache=/etc/ld.so.cache
      9035:  search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib        (system search path)
      9035:   trying file=/lib/x86_64-linux-gnu/libpython37.so
      9035:   trying file=/usr/lib/x86_64-linux-gnu/tls/libpython37.so
      9035:   trying file=/usr/lib/x86_64-linux-gnu/libpython37.so
      9035:   trying file=/lib/libpython37.so
      9035:   trying file=/usr/lib/libpython37.so
      9035: 
      9035: find library=python37 [0]; searching
      9035:  search path=tls/haswell/x86_64:tls/haswell:tls/x86_64:tls:haswell/x86_64:haswell:x86_64::/usr/local/lib        (LD_LIBRARY_PATH)
      9035:   trying file=tls/haswell/x86_64/python37
      9035:   trying file=tls/haswell/python37
      9035:   trying file=tls/x86_64/python37
      9035:   trying file=tls/python37
      9035:   trying file=haswell/x86_64/python37
      9035:   trying file=haswell/python37
      9035:   trying file=x86_64/python37
      9035:   trying file=python37
      9035:   trying file=/usr/local/lib/python37
      9035:  search cache=/etc/ld.so.cache
      9035:  search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib        (system search path)
      9035:   trying file=/lib/x86_64-linux-gnu/python37
      9035:   trying file=/usr/lib/x86_64-linux-gnu/tls/python37
      9035:   trying file=/usr/lib/x86_64-linux-gnu/python37
      9035:   trying file=/lib/python37
      9035:   trying file=/usr/lib/python37
      9035: 
      9035: find library=libpython37 [0]; searching
      9035:  search path=tls/haswell/x86_64:tls/haswell:tls/x86_64:tls:haswell/x86_64:haswell:x86_64::/usr/local/lib        (LD_LIBRARY_PATH)
      9035:   trying file=tls/haswell/x86_64/libpython37
      9035:   trying file=tls/haswell/libpython37
      9035:   trying file=tls/x86_64/libpython37
      9035:   trying file=tls/libpython37
      9035:   trying file=haswell/x86_64/libpython37
      9035:   trying file=haswell/libpython37
      9035:   trying file=x86_64/libpython37
      9035:   trying file=libpython37
      9035:   trying file=/usr/local/lib/libpython37
      9035:  search cache=/etc/ld.so.cache
      9035:  search path=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/tls:/usr/lib/x86_64-linux-gnu:/lib:/usr/lib        (system search path)
      9035:   trying file=/lib/x86_64-linux-gnu/libpython37
      9035:   trying file=/usr/lib/x86_64-linux-gnu/tls/libpython37
      9035:   trying file=/usr/lib/x86_64-linux-gnu/libpython37
      9035:   trying file=/lib/libpython37
      9035:   trying file=/usr/lib/libpython37  

Есть идеи, что компоновщик найдет подходящую общую библиотеку?

...