2016-03-31 17 views
0

Bu sorunun sıkça sorulmuş olduğunu biliyorum ancak içe aktarma konusunda çok özel bir sorunum var. (temp/ yılında)Komut dosyaları için mutlak ve göreli içe aktarım

main/main.py 
main/test_device.py 
main/lib/instructions.py 
main/device/android.py 
main/temp/example.py 

Temelde, burada ne oluyor programım (main.py) birkaç küçük komut dosyalarını oluşturur ve daha sonra onları çalıştırmak için çalışır şu şekildedir: Bir dosya yapıya sahiptir. Ancak, bu komut dosyalarının her biri, lib/instructions.py ve device/android.py referanslarına sahiptir. Bu kod, bu dosyaları çalıştırır:

name = "temp/test_" + str(program_name) + ".py" 
input_file = open("test_device.py", "r") 
contents = input_file.readlines() 
input_file.close() 
contents.insert(7, "program = [" + ", ".join(str(i) for i in instructions) + "]\r\n") 
contents.insert(8, "count = " + str(program_name) + "\r\n") 
contents = "".join(contents) 
input_file = open(name, "w+") 
input_file.write(contents) 
Popen("python " + name) 

Her dizinde __init__.py dosyaları var ama bu dosyalar komut dosyalarını, çünkü ben göreli ithalat kullanamaz. Bu kütüphaneleri nasıl ithal edebilirim?

+0

'../lib' eklemek veya kullanmanız gerekebilir . – Sevanteri

+0

@Sevanteri – Woody1193

cevap

1

Eğer sizi anlıyorsanız, diğer modülleri paketinizden içe aktarabilmek için içerikte oluşturduğunuz komut dosyasına ihtiyacınız var, ancak doğru hedef dizini b/c türünü isteyemez. Kendisinin üzerinde garip bir nispi ithalat. Birlikte

contents.insert(0, "import sys; sys.path.append('lib'); sys.path.append('device')") 

geç bir yazım hatası olabilir bu yüzden benim telefondayım burada & bitti, ama bunun senin için çalışacağız umuyorum liste katılmadan önce bu satırı eklemeyi deneyin.

düzenleme: Mevcut çalışma dizini hangi olana bağlı olarak size `temp` dir komut dosyalarını çalıştırmak için kullanmak bize kodu göster mutlak bir yol

+0

Özellikle sys'i bu şekilde kullanmaktan hoşlanmıyorum ama sanırım yardım edilemez. Çözüm için teşekkürler. – Woody1193

+0

rica ederim. Evet, sanırım nasıl adlandırılırsa, neredeyse sistem sesini değiştirirsiniz, ama gerçekten değişiklik yaptığınız ad alanını etkiler. Bu kalıcı değildir. –

1

Modüllerinizi python/lib/site paketlerine kopyalamak sorunu çözecektir.

+0

kodunu yükledim Bu son hedef ama henüz tam olarak hazır değiliz. – Woody1193

İlgili konular