[Python.NET] homebrew pythonnet, versus pip install --pre pythonnet

Adam Klein aklein at bluemountaincapital.com
Wed Jun 4 16:18:06 CEST 2014


Hopefully to save someone a headache in the future:

Although I didn’t think it had anything to do with my problem, I was curious why the ‘python setup.py build_ext’ command was failing with ‘[Error 5]: Access is denied’.  I put a ‘import ipdb; ipdb.set_trace()’ and found it’s because my tools/nugget/nuget.exe did not have executable permissions. Fixing that, I got a ‘RuntimeError: Windows SDK could not be found.’ This is definitely a lie - I have one installed :) Turns out my registry didn’t reflect what setup.py was trying to do. I changed keys_to_check (line 30) to include r"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1A\WinSDK-Win32Tools", which is where I put my InstallationFolder key set to “C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\”. Everything then compiled.

For the problem I’m facing, I’ll open a GitHub issue (and try to fix myself if I can…)


From: Adam Klein
Sent: Wednesday, June 04, 2014 8:55 AM
To: A list for users and developers of Python for .NET
Subject: RE: [Python.NET] homebrew pythonnet, versus pip install --pre pythonnet

Sorry for not being clear –

1) I’m not building on homebrew on mac :) I am building myself using VS2013.

2) Why do I need to use the setup.py? In any case, when I do this, ie running ‘python setup.py build_ext’ command, I get a [Error 5]: Access is denied.  A registry access failure perhaps? I couldn’t get this to work…

3) Everything actually works fine, my PYTHONPATH is set correctly, and it finds and loads the DLL assembly I’m trying to load. What is happening is that assembly then references other assemblies in the same path, but then, in FindAssembly (in assemblymanager.cs), the name it passes for those dependencies seems to be of the following form:

  "c:\\path\\XYZ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

It then constructs the name

"c:\\path\\XYZ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null.dll"

It therefore fails to find the assembly…

I confirmed that prior to the commit that changes Load(Byte[]) to LoadFrom(), everything works. That commit is

b65fa30c7b21cce263ed9ada982bd47bc18eea04 Use Assembly.Load(Byte[]) instead of Assembly.LoadFrom.

I can maybe fix and open a PR if I have time. But it’d be nice to confirm others see this behavior as well.


From: PythonDotNet [mailto:pythondotnet-bounces+aklein=bmcm.com at python.org] On Behalf Of Tony Roberts
Sent: Wednesday, June 04, 2014 6:15 AM
To: A list for users and developers of Python for .NET
Subject: Re: [Python.NET] homebrew pythonnet, versus pip install --pre pythonnet

Hi Adam,

that 2.0.0.beta1 build was built from the source on github here:
https://github.com/pythonnet/pythonnet

You should build it using the setup.py script and not in the IDE.

There are CI builds setup for both windows and linux (see README.md) if you want to see exactly how the wheel gets built.

Best regards,
Tony


On Wed, Jun 4, 2014 at 3:48 AM, Bradley Friedman <brad at fie.us<mailto:brad at fie.us>> wrote:
Can you provide the contents of the ".Config" file that is built with your particular build solution?  There's a pretty good chance that the "FileNotFound" is actually mono trying to link back to Python shared libraries.  Though to be honest, debugging is going to be your best bet here.  You might try building in Xamarin or MonoDevelop on the mac, to be able to debug more easily.

-brad

On Jun 3, 2014, at 7:15 PM, Tribble, Brett <btribble at ea.com<mailto:btribble at ea.com>> wrote:

It has been a while since I’ve had to deal with this, but make sure that your assembly is in the system path and/or pythonpath if it is not registered in the GAC.

From: PythonDotNet [mailto:pythondotnet-bounces+btribble=ea.com at python.org] On Behalf Of Adam Klein
Sent: Tuesday, June 03, 2014 4:02 PM
To: pythondotnet at python.org<mailto:pythondotnet at python.org>
Subject: [Python.NET] homebrew pythonnet, versus pip install --pre pythonnet

Hi All,

Amazing library, first of all!

I am experimenting with integrating ipython / numpy / pandas for interactive data analysis with our large existing C# codebase. We are using the Anaconda 2.0 release from ContinuumIO. With `pip install –pre pythonnet`, everything goes as expected (great!)

However, when I build from source (in VS2013), point my PYTHONPATH to the clr.pyd and Python.Runtime.dll that results from the build, and run my ipython, I can do `import clr` and `ref = clr.AddReference(“assemblyname”)`, but I cannot load any modules within this assembly. I get a `ImportError: No module named …` Furthermore, if I try to do ref.ExportedTypes, I get a `FileNotFoundException: Could not load file or assembly …` where it cannot find an assembly that is referenced by the original assembly. There must be some broken loading going on… Any thoughts why this might have different behavior than what I install via PyPI (https://pypi.python.org/pypi/pythonnet/2.0.0.dev1)? Or, hints on how to debug?

Thanks!!!

--Adam

________________________________

This e-mail is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, the information in this e-mail by persons or entities other than the intended recipient is prohibited and may be unlawful. If you received this in error, please contact the sender and delete the material from any computer.

This communication is for informational purposes only. It is not intended as and does not constitute an offer or solicitation for the purchase or sale of any financial instrument or as an official confirmation of any transaction. All market prices, data and other information are not warranted as to completeness or accuracy and are subject to change without notice. Any expected returns are provided for illustrative purposes only and are not intended to serve as, and must not be relied upon by any prospective investor as, a guaranty, an assurance, a prediction of a definitive statement of fact or a probability. Investment in funds managed by BlueMountain carries certain risks, including the risk of loss of principal. Unless indicated otherwise, performance results are presented net of fees and expenses. Certain market and economic events having an impact on performance may not repeat themselves. Any comments or statements made herein do not necessarily reflect those of BlueMountain Capital Management, LLC or its affiliates. PAST PERFORMANCE IS NOT NECESSARILY INDICATIVE OF FUTURE RESULTS AND NO REPRESENTATION IS MADE THAT RESULTS SIMILAR TO THOSE SHOWN CAN BE ACHIEVED.
_________________________________________________
Python.NET<http://Python.NET> mailing list - PythonDotNet at python.org<mailto:PythonDotNet at python.org>
https://mail.python.org/mailman/listinfo/pythondotnet


_________________________________________________
Python.NET mailing list - PythonDotNet at python.org<mailto: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/20140604/7e60d93f/attachment-0001.html>


More information about the PythonDotNet mailing list