2

現在BitBucketでホストされている小さな Python ライブラリを作成しました。ご覧のとおり、ライブラリは と呼ばpygpstoolsれ、5 つのファイルで構成されています。

  • gpstime.py→Aクラス
  • satellite.py→Aクラス
  • geodesy.py→ いくつかの測地法を含むモジュール
  • almanacs.py→ いくつかのアルマナックメソッドを含むモジュール
  • constants.py→いくつかの定数

READMEに書いてある通りに使いたいです。例えば:

from pygpstools import GPSTime
GPSTime(wn=1751, tow=314880)

また:

import pygpstools
pygpstools.GPSTime(wn=1751, tow=314880)

しかし、コマンドを使用してライブラリをインストールした後、このようなクラスにアクセスしようとするとpython setup.py install取得します。ImportErrorGPSTime

問題はファイルにあると思い__init__.pyます。Python IRC チャンネルでこれについて尋ねたところ、空のままにしておくとうまくいくと言われました。しかし、私が調査したところ、それはPythonにモジュールであることを伝えるだけのようですが、他のライブラリのように、私が探しているこの種のインポートを許可するには十分ではありません.

だから私はこれを次のように使用しようとしました(現在bitbucketで更新されていません)__init__.py

__title__ = 'pygpstools'
__version__ = '0.1.1'
__author__ = 'Roman Rodriguez'
__license__ = 'MIT'
__copyright__ = 'Copyright 2013 Roman Rodriguez'


import almanacs
import constants
import geodesy
import gpstime
import satellite

しかし、まだ機能しません: ImportErrorfor GPSTime.

私は何が欠けていますか?

4

1 に答える 1

4

GPSTimeたとえば、 はモジュールgpstime内にあるため、実際の (相対) 名はgpstime.GPSTimeです。したがって、インポートgpstimeすると、タイプへの参照を保持する__init__名前が実際に利用可能になります。gpstimegpstime.GPSTime

したがって、タイプ名としてfrom pygpstools import gpstimeand thenを使用する必要があります。gpstime.GPSTime

__init__明らかにこれはあなたが望むものではないので、代わりに、モジュール内のすべてのタイプを「収集」したいと考えています。それらを直接利用可能にするだけでそれを行うことができます:

from almanacs import *
from constants import *
from geodesy import *
from gpstime import GPSTime
from satellite import * 

*ファイルに実際にどのようなタイプがあるかを詳しく調べていなかったので、今は何かをインポートするために使用しました。ただし、指定する必要があります。__all__でリストを定義して__init__、書き込み時にどの名前をインポートするかを制御できるようにすることもお勧めしますfrom pygpstools import *

于 2013-09-02T13:57:59.173 に答える