第一个Python包:模块没有加载

时间:2014-09-11 00:31:42

标签: python-2.7 packages

背景:

显然我关于在Python中构建自动加载器的最佳方法的问题过于宽泛(https://stackoverflow.com/questions/25678974/python-autoloader)。不知道为什么......

我曾希望获得一些代码片段,以便在选择导入模块或构建软件包之间让生活变得更轻松。但不是那么多。所以我决定尝试构建一个python函数包,用于模拟PHP函数,如str_replace。

我已将包命名为p2p,目录结构如下:

lib/p2p
  setup.py
  CHANGES.txt
  MANIFEST.IN
  README.txt
  /bin (empty)
  /docs (empty)
  /p2p
    __init__.py
    /str
      __init__.py
      str.py
    /time
      __init__.py
      time.py
    /json
      __init__.py
      json.py
    /utils
      __init__.py
      utils.py

__init__.py都是空的。

在控制台中:

现在,当我构建包(python setup.py install)时,我没有错误。当我import p2p时,我没有错误。但是,当我尝试使用p2p.time.timeID()时,我得到了:

  

AttributeError:'module'对象没有属性'timeID'

当我输入p2p.time时,我得到:

  

模块'p2p.time'来自'/home/gabe/anaconda/lib/python2.7/site-packages/p2p/time/init.pyc'

我已经用Google搜索了属性错误,并在昨天的大部分时间里都在阅读如何创建python包。我究竟做错了什么? (最终这看起来就像使用简单的模块和自动加载器一样容易。由于Python中的相对路径限制,我不确定如何构建一个能够正确导入模块的自动加载器,而不仅仅是转储我的整个库目录结构进入道路。)

LIB / P2P / setup.py

from distutils.core import setup

setup(
    name='p2p',
    version='0.1.0',
    author='Me',
    author_email='me@example.com',
    packages=['p2p', 'p2p.test', 'p2p.str', 'p2p.time', 'p2p.json', 'p2p.utils'],
    package_dir={'p2p':'p2p', 'str':'p2p/str'},
    scripts=[],
    url='',
    license='LICENSE.txt',
    description='PHP to Python functions.',
    long_description=open('README.txt').read(),
    install_requires=[
        "",
    ],
)

LIB / P2P / P2P /时间/ time.py

import time

# http://www.php2python.com/wiki/function.microtime/
def timeID():
    return time.time()

说明:

  • Ubuntu 14.04 Dekstop
  • 使用Python 2.7的Anaconda
  • 的Spyder
  • 我是一个完整的Python Noob,但现在已经使用PHP和Ruby工作了几年

1 个答案:

答案 0 :(得分:0)

  

P2P /时间/ time.py

那你去吧。您想要p2p.time.time.timeID。或者你可以把它放在p2p/time/__init__.py中。