2015-10-14 28 views
1

我目前使用pythonxy包与enthought python 2.7。Python与合并命名空间enthought apptools

在我的软件中,我需要使用我自己的user_manager和其他权限工具。所以我需要添加外部来源到apptools.permissions

在apptools文档中,它说我需要开发另一个带名称空间的蛋,apptools.permissions.external

因此,我开发了一个文件夹三级:

  • apptools,
  • apptools.permissions,
  • apptools.permissions.external。
  • 和setup.py。

在setup.py,我写道:

# 3 

from setuptools import setup, find_packages 

setup(
     name = "apptools.permissions.external", 
     author = "Airbus", 
     version = '0.1' , 
     include_package_data = True, package_data={'': ['*.*']}, 
     packages = find_packages(),#exclude=["*.tests", "*.tests.*", "tests.*", "tests"]), 
     test_suite = 'nose.collector', 
     entry_points = """ 

     [envisage.plugins] 
     apptools.permissions.external = apptools.permissions.external.permissions_plugin:ExternalPermissionsPlugin 

     """, 
     #install_requires = ['Aerocity==1.01'], 
     zip_safe=True, 
     namespace_packages = ['apptools', 
          'apptools.permissions', 
          'apptools.permissions.external', 
          ], 
) 

然而,我python setup.py develop后。我去了Python并尝试import apptools.permissions.external

Python的告诉我说:

>>> import apptools.permissions.external 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named external 

所以它在某种程度上无法找到这个外部的鸡蛋。但是,如果我迅速将apptools的名称更改为apptools_test以及相关的文件夹和setup.py。我其实可以导入apptools_test.permissions.external。

所以我认为有一些问题,当我合并命名空间apptools.permissions.externalapptools。 Python不知何故变得困惑。

有人可以帮我解决这个问题吗?

回答

2

apptools.permissions很早以前就被设计为enthought.permissionsenthought是名称空间包。我们早已停止这样做,并将大多数ETS重构为单独的软件包(不幸的是,apptools仍然是一个抓包)。当我们这样做时,似乎没有人注意到它是(ab)使用这样的命名空间包。对于那个很抱歉。呃,我们自己并没有太多用处。把它带给你带来的任何冷感。 :-)

它做这种间接的唯一的地方是在_*_default()方法,所以你应该能够为这些特性分配你自己的实例。我不确定为什么命名空间扩展机制被尝试。

+0

嗨Robert, 非常感谢您的回复。别担心。 这与我们的legancy软件有关。它的设计使用python 2.5与enthought.permissions的东西。我升级到Python 2.7,并得到了这个问题。 非常感谢您的建议。我看了一下apptools.permissions中的__init__.py,它没有declare_namespace。我加入它,然后一切都很好。 也许,我们需要找到一个更好的未来命名空间的东西。如果你能给我任何建议,我会很高兴。 非常感谢。 –