背景:
显然,我关于用Python构建自动加载器的最佳方法的问题太宽泛了(https://stackoverflow.com/questions/25678974/python-autoloader)。不知道为什么..。
我曾希望得到一些代码片段,以使我的生活更容易之间的选择,导入模块或构建包。但没那么多。因此,我决定尝试构建一个用于模仿str_replace函数的python函数包。
我将包命名为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:“模块”对象没有属性“timeID”
当我输入p2p.time时,我得到:
'/home/gabe/anaconda/lib/python2.7/site-packages/p2p/time/init.pyc‘中的“p2p.time”模块
我搜索了属性错误,昨天大部分时间都在阅读如何创建python包。我做错了什么?(最终看来,使用简单的模块和自动加载程序会更容易。由于Python中的相对路径限制,我不知道如何构建正确导入模块的自动加载程序,而不只是将整个库目录结构转储到path中。
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/time.py
import time
# http://www.php2python.com/wiki/function.microtime/
def timeID():
return time.time()备注:
发布于 2014-09-11 02:08:23
p2p/time/time.py
好吧,给你。你想要的是p2p.time.time.timeID。或者你可以把它放在p2p/time/__init__.py里。
https://stackoverflow.com/questions/25777196
复制相似问题