Skip to content

Unable to load shared library 'libdl.so' #1422

@eightrivers

Description

@eightrivers

Environment

  • Pythonnet version:3.0.0.0
  • Python version:3.8.5
  • Operating System: Ubuntu 18.04 (Windows 10, WSL 2.0)
  • .NET Runtime: Dotnet Core 5.0.201

Details

I am trying to execute a Python file in a dotnet core program. I get the newest source code from github, and compiled it successfully as a DLL accoding the guidence. The version of the DLL is 3.0.0.0. I add this DLL as a reference of the project, and compile the project successfully. And then I use the command 'dotnet run' to execute the code. An exception occours with message: Unhandled exception. System.TypeInitializationException: The type initializer for 'Python.Runtime.UcsMarshaler' threw an exception.

Code

program.cs

The exception occurs when trying to execute the line: PythonEngine.PythonHome = "/home/leo/Anaconda3";

using Python.Runtime;
using System;
using System.IO;

namespace PythonDotNet
{
    class Program
    {
        static void Main(string[] args)
        {
            
            try
            {
                PythonEngine.PythonHome = "/home/leo/Anaconda3";
                PythonEngine.Initialize();

                var script = File.ReadAllText("t1.py");

                PyDict locals = new PyDict();

                PythonEngine.Exec(script, null, locals.Handle);
                
            }
            finally
            {
                PythonEngine.Shutdown();
                Console.WriteLine("Done...");
                Console.ReadKey();

            }

        }
    }
}

python_dotnet.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

<ItemGroup>
    <Reference Include="Python.Runtime">
        <HintPath>ref/Python.Runtime.dll</HintPath>
    </Reference>
</ItemGroup>

    <ItemGroup>
    <None Update="t1.py">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
</Project>

command to run

dotnet run

Exception

The error message indicates that there is a file named 'lidbl.so'.

Unhandled exception. System.TypeInitializationException: The type initializer for 'Python.Runtime.UcsMarshaler' threw an exception.
 ---> System.TypeInitializationException: The type initializer for 'Delegates' threw an exception.
 ---> System.TypeInitializationException: The type initializer for 'Python.Runtime.Runtime' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'libdl.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibdl.so: cannot open shared object file: No such file or directory
   at Python.Runtime.Platform.LinuxLoader.dlerror()
   at Python.Runtime.Platform.LinuxLoader.ClearError() in /home/leo/project/pythonnet/src/runtime/platform/LibraryLoader.cs:line 90
   at Python.Runtime.Platform.LinuxLoader.GetFunction(IntPtr dllHandle, String name) in /home/leo/project/pythonnet/src/runtime/platform/LibraryLoader.cs:line 78
   at Python.Runtime.Runtime.GetDefaultDllName() in /home/leo/project/pythonnet/src/runtime/runtime.cs:line 42
   at Python.Runtime.Runtime..cctor() in /home/leo/project/pythonnet/src/runtime/runtime.cs:line 34
   --- End of inner exception stack trace ---
   at Python.Runtime.Runtime.Delegates..cctor() in /home/leo/project/pythonnet/src/runtime/runtime.cs:line 2251
   --- End of inner exception stack trace ---
   at Python.Runtime.Runtime.Delegates.get_PyUnicode_GetMax() in /home/leo/project/pythonnet/src/runtime/runtime.cs:line 2688
   at Python.Runtime.Runtime.PyUnicode_GetMax() in /home/leo/project/pythonnet/src/runtime/runtime.cs:line 1559
   at Python.Runtime.UcsMarshaler..cctor() in /home/leo/project/pythonnet/src/runtime/CustomMarshaler.cs:line 44
   --- End of inner exception stack trace ---
   at Python.Runtime.UcsMarshaler.Py3UnicodePy2StringtoPtr(String s) in /home/leo/project/pythonnet/src/runtime/CustomMarshaler.cs:line 124
   at Python.Runtime.PythonEngine.set_PythonHome(String value) in /home/leo/project/pythonnet/src/runtime/pythonengine.cs:line 97
   at PythonDotNet.Program.Main(String[] args) in /home/leo/project/python_dotnet/Program.cs:line 14

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions