1

これは本当に奇妙です。このコードを (ノーズ テストとして) 実行すると、「-0:34:00.0」と出力され、すべて問題ありません。

def test_o1(self):
    observer = ephem.Observer()
    observer.lon, observer.lat = math.radians(73.9), math.radians(40.7)
    observer.horizon = '-0:34'
    print observer.horizon

しかし、これを実行すると:

def test_o2(self):
    location = UserLocation()
    location.foo()

ここで、UserLocation は次のとおりです。

# Document is mongoengine.Document
class UserLocation(Document):
    [...]
    def foo(self):
        observer = ephem.Observer()
        observer.lon, observer.lat = math.radians(73.9), math.radians(40.7)
        observer.horizon = '-0:34'

私は得る:

Traceback (most recent call last):
  File "/home/roy/deploy/current/python/local/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/roy/deploy/current/code/pyza/models/test_user_location.py", line 82, in test_o2
   location.foo()
  File "/home/roy/deploy/current/code/pyza/models/user_location.py", line 134, in foo
    observer.horizon = '-0:34'
TypeError: can only update value with String or number

何が起こっているのでしょうか?

4

1 に答える 1

1

ああああ。私はそれを考え出した。私のUserLocationソースファイルは次で始まります:

今後のインポート unicode_literalsから

どうやら、_libastro は Unicode ではなく、ASCII 文字列を主張しているようです。

于 2014-02-25T22:07:23.463 に答える