Я довольно новичок в использовании 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).
Поэтому, чтобы компоновщик искал нужные места, я добавил путь к пути поиска библиотеки линкеров, используя:
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
Есть идеи, что компоновщик найдет подходящую общую библиотеку?