2015-10-14 110 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。我加入它,然後一切都很好。 也許,我們需要找到一個更好的未來命名空間的東西。如果你能給我任何建議,我會很高興。 非常感謝。 –