[Python.NET] Running an embedded interpreter

Tony Roberts tony at pyxll.com
Tue Aug 19 18:15:38 CEST 2014


Hi Serge,

'mbcs' is what python uses to mean the current configured encoding. I would
guess that the encoding of sys.stdout is different when using visual studio
output console than the console.

You could try a different encoding method by setting the PYTHONIOENCODING
environment variable before starting your exe, eg:
SET PYTHONIOENCODING=utf-8:ignore

Look for PYTHONIOENCODING here https://docs.python.org/3/using/cmdline.html
for more details.

Tony




On Tue, Aug 19, 2014 at 2:22 PM, Serge WEINSTOCK <
serge.weinstock at uk.bnpparibas.com> wrote:

>  Hi,
>
>
>
> I’m trying to use Python3.2 using the Python.Net version found at:
> https://github.com/renshawbay/pythonnet
>
>
>
> I’m using the following simple test program:
>
>
>
> //=======================================================================
>
> using System;
>
> using System.IO;
>
> using Python.Runtime;
>
>
>
> namespace TestPythonNet
>
> {
>
>     class Program
>
>     {
>
>         static void Main(string[] args)
>
>         {
>
>             string binDir =
> Path.GetDirectoryName(System.Reflection.Assembly.GetAssembly(typeof(Program)).Location);
>
>             string pyHome =
> @"D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime";
>
>             PythonEngine.PythonHome =
> @"D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime";
>
>             PythonEngine.ProgramName = "PythonRuntime";
>
>             Environment.SetEnvironmentVariable("PYTHONPATH",
>
>                 Path.GetFullPath(Path.Combine(pyHome, "DLLs")) + ";" +
>
>                 Path.GetFullPath(Path.Combine(pyHome, "Lib")) + ";" +
>
>                 Path.GetFullPath(Path.Combine(pyHome, "Lib",
> "site-packages")) + ";" +
>
>                 binDir
>
>                 );
>
>             Environment.SetEnvironmentVariable("PYTHONVERBOSE", "1");
>
>             PythonEngine.Initialize();
>
>             PythonEngine.ImportModule("clr");
>
>             using (Py.GIL())
>
>             {
>
>                 PythonEngine.RunSimpleString(
>
>                     "import clr; " +
>
>                    "a = clr.AddReference('System'); " +
>
>                     "print(a.Location);" +
>
>                     "from System import Environment;" +
>
>                     "print(Environment.MachineName);");
>
>             }
>
>         }
>
>     }
>
> }
>
> //=======================================================================
>
>
>
> “D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime” is a folder
> where I’ve copied the DLLs and Lib folder from a python 3.2 x86
> distribution.
>
>
>
>
>
> When I run it from Visual Studio it works fine (I guess it may be related
> to the fact that I’m using python tools for Visual Studio).
>
>
>
> But when I run it from the console, it fails with the output:
>
>
>
> //=======================================================================
>
> Traceback (most recent call last):
>
>   File
> "D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime\Lib\site.py",
> line 481, in execsitecustomize
>
>     import sitecustomize
>
> UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1:
> invalid character
>
> Traceback (most recent call last):
>
>   File
> "D:\src\scratch\TestPythonNet\TestPythonNet\PythonRuntime\Lib\site.py",
> line 497, in execusercustomize
>
>     import usercustomize
>
> UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1:
> invalid character
>
>
> C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll
>
> Traceback (most recent call last):
>
>   File "<string>", line 1, in <module>
>
> UnicodeEncodeError: 'mbcs' codec can't encode characters in position 0--1:
> invalid character
>
> //=======================================================================
>
>
>
> The “print(a.Location);" works but not the “from System import
> Environment”. There are also all these errors about mbcs.
>
>
>
> Any idea on what I’m doing wrong?
>
>
>
> Thanks,
>
> Serge Weinstock
>
>
>
>
> ___________________________________________________________
> This e-mail may contain confidential and/or privileged information. If you
> are not the intended recipient (or have received this e-mail in error)
> please notify the sender immediately and delete this e-mail. Any
> unauthorised copying, disclosure or distribution of the material in this
> e-mail is prohibited.
>
> Please refer to http://www.bnpparibas.co.uk/en/email-disclaimer/ for
> additional disclosures.
>
> _________________________________________________
> Python.NET mailing list - PythonDotNet at python.org
> https://mail.python.org/mailman/listinfo/pythondotnet
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20140819/8631b473/attachment-0001.html>


More information about the PythonDotNet mailing list