2013-01-22 20 views
7

Uygulamamda python'u gömmeye çalışıyorum ve çok erken takıldım.Python hatası katıştırma Dosya adına göre içe aktarma desteklenmiyor

benim C++ uygulamasına piton gömme ve bu öğretici bulunan kod kullanıyorum: http://docs.python.org/2/extending/embedding.html#pure-embedding

başvurum tamamen eşleşir ve başarılı hiç hata derler. Ancak pModule = PyImport_Import(pName); hat 0 anlamını dönen başarısız uygulamayı çalıştıran ben emin olamaz C:\Users\workspace\ndnlib\pyscript.py multiply 50 150

+0

Çift ters eğik çizgiyi mi denediniz? \\ – imreal

+0

Bunu denedim, aynı hata. – ceorron

+0

Python komut dosyasında hangi ithalatları kullanıyorsunuz? – imreal

cevap

7

komutlarla çağrılan

Failed to load "C:\Users\workspace\dpllib\pyscript.py" 
ImportError: Import by filename is not supported. 

uygulama arasında PyErr_Print() den hata çıktı almak, ama ben pName argv [1] olarak ayarlandığını ve betiği çağırmak için tam yolu kullandığınızı düşünürken, argv [1] tam yoldur. Bu, kodun "C: \ Users \ workspace \ dpllib \ pyscript.py" dosyasını almayı deneyeceği anlamına gelir; bu, python'un yapamayacağı (yalnızca "pyscript'i içe aktarabilir").

Dizinde "pyscript.py" yazarak komut dosyasını çalıştırmayı deneyin ve hatanın 'Yükleme Başarısız Oldu' pyscript.py "'şeklinde değişip görülmediğine bakın. Eğer öyleyse, bunu düzeltmeniz gerekir, böylece sadece argv [1] dosyasını içe aktarmaz ve bir dosya adı yerine bir modül adı almak için dizgiyi değiştirir.

+1

Evet Yazdığınız gibi bu dosyayı aldım, dosya yerel olarak exe olmalıdır. Aynı dizin, bir alt klasörde bile yok! .py uzantısına sahip olmamalıdır. Teşekkürler zaten – ceorron

+0

Düzenle alt dizinleri izin verilir, ancak sadece "pyscript" yükleyin ve arama sizin için yapılır. – ceorron

+0

Doğrudan çalıştırmaya çalışırken, ubuntu doğrudan "chmod + x pyscript.py" ile düzeltilmiş bir izin hatasına yol açtı. Ancak bu noktada "ImportError: Pyscript adlı bir modül yok" ile sıkıştık. –

0

Dosyanızı bir modül olarak oluşturursanız daha basittir. Örneğin

,

bu oluşturun: bir modül olacaktır yana

<project>/MyModule/__init__.py

Sonra dosyanızı <project>/script.py

dyn_module_name = (... get module name 'MyModule' from console arguments ...) 
my_dynamic_module = __import__(dyn_module_name) 

çalıştırın sizin scripy.py ederken yükleyecektir yürütme

İlgili konular