#!/bin/perl
use Inline Python;
$s = new Sun();
print "SUN: $s\n";
$m = new Moon();
__END__
__Python__
from ephem import Sun as Sun;
from ephem import Moon as Moon;
失敗以上產量的代碼:Perl的內嵌:: Python的上pyephem
SUN: <Sun "Sun" at 0x9ef6f14>
Can't bless non-reference value at /usr/local/lib/perl5/site_perl/5.10.0/i386-linux-thread-multi/Inline/Python.pm line 317.
有什麼不對?我和許多其他物體嘗試這樣(如:
from ephem import Observer as Observer;
然後
$o= new Observer();
在我的代碼的身體
)並能正常工作的一切我已經試過除非月球。
EDIT(可能是無用的信息):
在https://github.com/brandon-rhodes/pyephem/tree/master/libastro-3.7.5:
計算太陽,水星,金星,火星(那些 是做工精細)的程序在做vsop87.c ,函數vsop87()
用於計算木星,土星等( 不工作的那些)的例程在chap95.c中完成,函數chap95()
vsop87()「返回」一個包含6個雙打的數組,這似乎是某種球面座標的一些 。 chap95()「返回」一個包含6個雙精度的數組,它看起來像是 直角座標,即矩形和非球形。
plans.c中的planpos()調用上述兩個函數之一, ,具體取決於您選擇的星球。奇怪的是,planpos() 將函數結果視爲相同(排序),即使它們 返回完全不同的東西。
在planpos()之後,所有的行星都被視爲一樣。 planpos()是 由計劃()(也在plans.c),它依次由 obj_planet()在調用circum.c稱爲然後由obj_cir稱爲(也)在 circum.c
obj_planet()和obj_cir()定義了這個星球。由於在planpos()後對行星 的處理方式相同,因此它們之間應該沒有差別 。
木星而土星也不行,但水星和金星的工作。這三種非工作方式在python代碼中是特殊的。 –
我也嘗試過火星,它的工作原理。我不知道是否有任何Python代碼...我認爲Python的東西只是綁定到C庫libastro。 – barrycarter
在我的'/usr/local/lib/python2.7/site-packages/ephem/__ init __。py'系統中有一些粘連python代碼。我在那裏看到月球,木星和土星的特殊處理。評論說:「我們現在替換我們剛剛創建的兩個類,因爲_libastro實際上爲兩個主體提供了不同的類型。」 –