Python 2.7 第一个Python包:模块未加载 背景:

Python 2.7 第一个Python包:模块未加载 背景:,python-2.7,packages,Python 2.7,Packages,显然,我关于用Python构建自动加载器的最佳方法的问题太广泛了。不知道为什么 我曾希望得到一些代码片段,以便在导入模块或构建包之间做出选择。但不多。所以我决定尝试构建一个python函数包,用来模拟PHP函数,比如str_replace 我将包命名为p2p,目录结构如下: lib/p2p setup.py CHANGES.txt MANIFEST.IN README.txt /bin (empty) /docs (empty) /p2p __init__.p

显然,我关于用Python构建自动加载器的最佳方法的问题太广泛了。不知道为什么

我曾希望得到一些代码片段,以便在导入模块或构建包之间做出选择。但不多。所以我决定尝试构建一个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__u; py.py都是空的

在控制台中: 现在,当我构建包python setup.py install时,我没有收到任何错误。当我导入p2p时,我没有收到任何错误。但是,当我尝试使用p2p.time.timeID时,我得到:

AttributeError:“模块”对象没有属性“timeID”

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

来自“/home/gabe/anaconda/lib/python2.7/site packages/p2p/time/init.pyc”的模块“p2p.time”

我用谷歌搜索了属性错误,并花了昨天大部分时间阅读了如何创建python包。我做错了什么?最终看来,使用简单的模块和自动加载器会更容易。由于Python中的相对路径限制,我不确定如何构建一个能够正确导入模块的自动加载程序,而不只是将整个库目录结构转储到路径中

lib/p2p/setup.py lib/p2p/p2p/time/time.py 笔记: Ubuntu 14.04 Dekstop 使用Python 2.7的Anaconda 斯派德 我是一个完全的Python Noob,但现在已经在PHP和Ruby中工作了几年 p2p/time/time.py


好了,就这样。您需要的是p2p.time.time.timeID。或者你可以把它放在p2p/time/\uu init\uuu.py中。

我希望你是对的。但是,我得到了相同的错误,timeID被time替换。也就是说,如果我希望结构是p2p.time.timeID,您建议将timeID放入_uinit__;uy.py中。我还可以简单地将time.py移到/lib/p2p/p2p目录吗?去掉str、time、json和utils目录……如果你想改用p2p.time.timeID,你可以将time.py提高一个级别,去掉time/。我现在也试过了,但它也不起作用。但是,如果我使用from p2p.time import time作为t2,那么我可以调用t2.timeID并获得一个关于时间的新错误,即属性time听起来不一样,但指向代码中的不同点。因此,我将time.py顶部的导入时间更改为t。但是仍然看到没有属性的问题…这是一个问题。谢谢你的时间问题的链接。在看到你的评论之前,我想可能是命名的问题。所以我已经破坏了我的目录和文件名来测试它。我现在可以通过p2p.timeTools作为t2导入工具来访问timeID,其中time目录变成了timeTools,time.py变成了tools.py。但是,str模块的行为是相同的。我可以通过p2p.str导入str作为s2,然后s2.str_替换。但是我不能通过简单的导入p2p和p2p.str.str.str_替换来实现。
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=[
        "",
    ],
)
import time

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