I hope this will help some people like me searching for an answer. Several steps were mentioned in the Python for .NET mailing list by other people as well, but I haven’t seen a step-by-step guide. It is not my intention to duplicate other posts in that sense, but rather have all-in-one post.
Here is how I’ve got VS2010 and .NET 4.0 working with the revision 122 of the Python.NET having Python 2.6 installed.
Compile
- Get the sources (tarball from sourceforge or directly from SVN)
- Open the pythonnet.sln with VS2010 and convert to 2010 format (will happen automagically)
- [updated] Add the constructorbinding.cs to the Python.Runtime.csproj project (see also this post in the PythonNET mailing list)
- Change the target framework to 4. Follow the following step for EACH project
Right-click on the project name and select “Properties”
Select the “Application” tab on the left (if not selected yet)
Change the “Target framework” to “.NET Framework 4” - Open the buildclrmodule.bat and change the following lines (2 times!)
%windir%\Microsoft.NET\Framework\v2.0.50727\ilasm /nologo /quiet /dll %ILASM_EXTRA_ARGS% /include=%INCLUDE_PATH% /output=%OUTPUT_PATH% %INPUT_PATH%
to
%windir%\Microsoft.NET\Framework\v4.0.30319\ilasm /nologo /quiet /dll %ILASM_EXTRA_ARGS% /include=%INCLUDE_PATH% /output=%OUTPUT_PATH% %INPUT_PATH%
- Open the clrmodule.il and change the lines with the version number in the following piece of code.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}
to
.ver 4:0:0:0
- Recompile the whole solution, ignore the deprecation warnings.
Now you have all necessary files under the pythonnet folder where you have the sources. You need clr.pyd, python.exe and Python.Runtime.dll.
Test
- Run the newly compiled python.exe
Type the following in the interactive prompt>>> import System
>>> print System.Environment.Version
4.0.30319.1The last line proves that you’re using the 4.0 runtime. The precompiled binaries available from SourceForge would show
2.0.50727.3615