Python'da bir kitaplık oluşturdum. Linux veya Windows üzerinde kullanabilirim. Python olmayan herhangi bir betik/programın çoğundan buna çağrı yapmak istiyorum. İdeal olarak, mümkünse çapraz platform seçeneği tercih ediyorum, ama şimdilik Linux en önemli olanı. Yine de bir komut istemi arabiriminden diğerine ulaşmak ve sistem çağrılarını/ShellExec stili komut dosyalarını kullanmaktan başka var mı? Bu tüm Windows tabanlı programlama, örneğin, bir dll oluşturmak olsaydı ... Eğer Linux bir şekilde php ve Windows, C + +, vb bir şekilde doğrudan kütüphane kullanabiliyordum olsa harika olurdu. Herhangi bir fikir?Python'u diğer dillerden aramak için Evrensel (veya en iyi) seçeneği?
cevap
Çağrılar yapmak çok kapsamlı bir tanımlamadır ve çözüm, bu aramalardan çıkış almak ve almak isteyip istemediğinize bağlıdır. Eğer yaparsanız, JSON kullanarak PHP ve Python arasında oldukça genel bir çözüm takip edebilirsiniz. Php için: NOT: Kodum değil, orijinal here'a bakın.
// This is the data you want to pass to Python
$data = array('as', 'df', 'gh');
// Execute the python script with the JSON data
$result = shell_exec('python /path/to/myScript.py ' . escapeshellarg(json_encode($data)));
// Decode the result
$resultData = json_decode($result, true);
// This will contain: array('status' => 'Yes!')
var_dump($resultData);
Ve Python için
: Eğer gerekmiyorsaimport sys, json
# Load the data that PHP sent us
try:
data = json.loads(sys.argv[1])
except:
print "ERROR"
sys.exit(1)
# Generate some data to send to PHP
result = {'status': 'Yes!'}
# Send it to stdout (to PHP)
print json.dumps(result)
Açıkçası bu PHP'de system veya popen kullanarak yetebilir. Ayrıca kontrol edin: Eğer komut satırı arayüzü kullanmak istemiyoruz söyledi yana
, bir hizmete çapraz platform erişimi için mantıklı cevap bir web API kullanmaktır. Ve bu şekilde yaparak, API'nın tüketicisi sağlayıcıdan farklı bir işletim sisteminde çalışabilir.
Bu blog post'u izlemeden önce API'ler kurdum. Python seçenekleriniz here'un daha eksiksiz bir listesi var.
Bu genel olarak mükemmel bir çözüm olduğunu düşünüyorum ve bunun için sizi destekledim. Komut satırı arayüzünü önler, alt süreçleri önler ve çapraz platformdur! Anında kullanım durumumun ayrıntılarını eklemedim, ancak temel olarak geliştirdiğim bu özel kitaplık özel sunucudan sunucuya güvenli https postaları (ve diğer web protokolleri) zincirini içeriyor. Mesajlar, ssl certs, http kodları vb.den izole eden bir kütüphane hizmeti veren bir istemci sonu istiyorum. Bu yüzden bu çözüm bu amaç için gereksiz ve aptalca olacaktır.(Senin suçun değil, tüm bu detayları ön tarafa eklemedim!) – BuvinJ
Hmm, https://docs.python.org/2/extending/embedding.html diye düşündüm ama sen dedin ki ... komut dosyası/program. Gömülü python sadece müşteriyi de yazıyorsa çalışır. Diğer seçenek, izlediğiniz bir dizinin olması ve istemcinin buna istekte bulunması ve ardından yanıt dosyasına bakılmasıdır. Sadece unix için, adlandırılmış borular var. –
Başka bir iyi öneri. Sadece Windows'da bunu başarmak isteseydim, muhtemelen Python'u bir C++ dll dosyasına yerleştirebileceğimi düşündüm. Diğer tüm MS teknolojileri için uyumlu bir dll yapılabileceğine inanıyorum, ör. C#, VB, vs. Linux'ta bir dll eşdeğeri olmadıkça, bu Linux'a yardımcı olmaz mı? – BuvinJ
- 1. en iyi (veya en azından iyi) kılavuz
- 2. Amazon Cloud'da en iyi 'kayıt' seçeneği. RDS veya SimpleDB?
- 3. Evrensel (tablet & telefon) uygulaması - nasıl en iyi yapı - çoklu düzen xml veya widget/göster/gizle?
- 4. Diğer kullanıcıları kaydetmek/favorilere eklemek için en iyi ray eklentisi?
- 5. Basit tür diğer adları - Oracle için en iyi yöntem
- 6. Simgeler, sanat eserleri vb. Için iyi kaynaklar aramak
- 7. Bir süre döngü pythonu
- 8. Python için en iyi GUI?
- 9. C++, en iyi uygulamalar, int veya size_t?
- 10. Eclipse Sorunları İçin En İyi Uygulamalar Görünüm
- 11. Google Haritalar veya Yahoo Haritalar için En İyi .NET Sarıcı?
- 12. en iyi dizi_search veya in_array hangisi?
- 13. Saniyede Dosya Değiştirme Süresinin En İyi Yolu
- 14. vs215 üzerinde çalışan evrensel uygulamalar üzerinde evrensel evrensel uygulama win7
- 15. En iyi uygulamalar: Diğer hizmetlere veya doğrudan depolara çağrı mı hizmetleri?
- 16. Herkes için en iyi uygulamaları
- 17. WCF - ortak yöntemleri paylaşan birden fazla sözleşme olduğunda en iyi uygulamayı aramak
- 18. Diğer <select> seçeneği <select> seçeneği devre dışı bırakma seçeneği nasıl seçilir?
- 19. Mongoid'i öğrenmek için en iyi öğretici nedir?
- 20. Tasarım kalıpları için en iyi web siteleri?
- 21. Bir 2D dizi aramak için en temiz yol?
- 22. Çoklu seçimlerde en son tıklanan seçeneği al
- 23. en iyi kitapları veya öğreticiler CakePHP Gelişmiş Programcı
- 24. en iyi yolu?
- 25. En İyi C# bağlamaları?
- 26. Apache günlük dosyalarını döndürmenin en iyi yolu
- 27. WebGL'yi öğrenmek için en iyi yol nedir?
- 28. perl6 Dizileri sıralamak için en iyi yollar?
- 29. Web2py'deki diğer açılır listeye göre açılır menüyü doldurmak için en iyi yöntem nedir?
- 30. En İyi UTF-8 verileri için yazın?
Teşekkürler. Verileri her iki yönde de iletmek istiyorum. Cevabınızdaki sıkıntı, aslında aklıma gelen anlık çözüm olan sistem çağrılarını/shellex'i kullanmasıdır, ama alternatif olarak aradığım şeydir. Ancak ilginizden dolayı, bağlantılarınızdan biri, http://www.csh.rit.edu/~jon/projects/pip/ adresinde, en azından python/php ("evrensel" olmasa bile) için ilginç bir olasılık olan bir bağlantı içeriyordu. çözüm). – BuvinJ
Muhtemelen, istediğim şey için komutla çalışan bir arabirimden kaçınmak yok ... – BuvinJ
Python sözdizimini php'ye dönüştürmenin bir yolu yoksa veya bir şekilde yayınladığınız bağlantıda olduğu gibi bir noktada olması gerekir. Python yorumlayıcısını açın (tahmin edeyim, kütüphaneleri python lib'lerine yüklemeye başlamak istediğinizde yeni bir kabus olacaktır). Her durumda bağlantı güncelleniyor ve proje aktif görünüyor. Neden bunu yapan ve yapmaya çalıştığınız şey için işe yarayıp yaramayacağını soran adama başvurmuyorsunuz? – armatita