2011-06-13 28 views
8

私はWindows 7,64ビットを使用しています。私はpythonnetをダウンロードしてインストールすることができたので、Pythonからpythonnet経由でC#アセンブリを使用する

import clr 
clr.AddReference("System.Windows.Forms") 
from System.Windows.Forms import Form 

が役に立ちます。また、たくさんのアセンブリを作成するC#アプリケーションをダウンロードしてコンパイル/実行しました。問題のアプリケーションはARDrone-Control-.NETです。

どのようにして、Pythonから(そして組み込みのC#クラスだけでなく)生成されたDLLファイルを使用できますか?

私はC#を使用したことがありません(なぜPythonのライブラリを使用したいのですか)。質問を明確にすることができます。

+1

あなたは多くの不必要な摩擦を受けているようです。あなたは単にこのプロジェクトにIron Pythonを使用することを考えましたか? –

+0

IronPythonはかなり安定していますが、いったんMSによってオープンソース化されると、開発は非常に遅くなりました。 CPythonは非常に安定していて、numpy、Cython、pandasなどで使用される強力なC APIを持っています。 – denfromufa

答えて

3

私が集めたことから、Python.Netで外部アセンブリをロードしようとしているので、私はそのライブラリでほとんど仕事をしていません。

import sys 
sys.path.append("C:\Path\to\your\assemblies") 

clr.AddReference('MyAssembly') 
from MyAssembly import MyClass 

MyClass.does_something() 

これはC:\Path\to\your\assembliesフォルダ内のあなたのことを前提としています。あなたはちょうど別の方法を提供するために、この

Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import clr 
>>> from System.Reflection import Assembly 
>>> dll1 = Assembly.LoadFile("C:\Python\Python27-32\Lib\site-packages\Python.Runtime.dll") 
>>> clr.Python.Runtime 
<module 'Python.Runtime'> 
>>> clr.Python.Runtime.PythonEngine 
<class 'Python.Runtime.PythonEngine'> 
+1

IronPythonは残念ながらオプションではありません。 – Petter

+0

提供されている例はpython.netで動作するはずです – mitchellsg

+0

OK、ありがとう! 1.2.3.4。 – Petter

11

のようにネットの反射によってアセンブリを読み込むことができます代わりにIronPythonのを使用しますがPython.Netを使用することを検討すべきですMyAssembly.dllファイルがあります。

したがって、sys.pathのアセンブリフォルダをclr.AddReferenceの前に追加する必要があります。

+0

clrをインポートする前に、sys.pathにアセンブリディレクトリを追加する必要がありました。私はそれが最近のものなのか、私のマシンの異常なのか分かりませんが、もしそれが重要であれば、おそらくここに書き留めるべきです。 – Tritium21

関連する問題