2

我编写了一个小型 Python 库,目前托管在BitBucket上。如您所见,该库名为pygpstools,它由 5 个文件组成:

  • gpstime.py→ 一个班
  • satellite.py→ 一个班
  • 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

但仍然不起作用:ImportError对于GPSTime.

我错过了什么?

4

1 回答 1

4

GPSTime,例如,在模块gpstime中,所以它的实际(相对)名称是gpstime.GPSTime。因此,当您导入时gpstime,您__init__实际上是在提供gpstime包含对您的类型的引用的名称gpstime.GPSTime

所以你必须使用from pygpstools import gpstimethengpstime.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 回答