Python 2.7 带有合并命名空间的Python工具
我目前正在使用pythonxy包中的Python2.7 在我的软件中,我需要使用自己的Python 2.7 带有合并命名空间的Python工具,python-2.7,enthought,Python 2.7,Enthought,我目前正在使用pythonxy包中的Python2.7 在我的软件中,我需要使用自己的user\u manager和其他权限工具。因此,我需要将外部源添加到apptools.permissions 在apptools文档中,它说我需要开发另一个具有名称空间的egg,apptools.permissions.external 因此,我开发了一个具有三个级别的文件夹: 应用工具 apptools.permissions apptools.permissions.external 和setup.py
user\u manager
和其他权限工具。因此,我需要将外部源添加到apptools.permissions
在apptools文档中,它说我需要开发另一个具有名称空间的egg,apptools.permissions.external
因此,我开发了一个具有三个级别的文件夹:
- 应用工具
- apptools.permissions
- apptools.permissions.external李>
- 和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
之后。我转到python并尝试导入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.permissions.external
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为external的模块
所以它不知怎么的找不到这个外卵。但是,如果我快速将apptools
的名称更改为likeapptools\u test
,并在文件夹和setup.py
中关联。我实际上可以导入apptools\u test.permissions.external
因此,我认为将namespaceapptools.permissions.external
合并到apptools
时会出现一些问题。Python不知怎么搞糊涂了
有人能帮我解决这个问题吗?
apptools.permissions
是很久以前在enthund时设计的。permissions
和enthund
是一个命名空间包。我们早就停止这样做了,并将大部分ETS重构为单独的包(遗憾的是,apptools
仍然是一个垃圾包)。当我们这样做时,似乎没有人注意到它(ab)使用了这样的名称空间包。很抱歉。我们自己不怎么用。不管它给你带来什么寒冷的舒适,你都要接受它。:-)
它执行这种间接寻址的唯一位置是
\u*\ u default()
方法,因此您应该能够为这些特性分配自己的实例。我真的不知道为什么尝试使用名称空间扩展机制。你好,Robert,非常感谢您的回复。别担心。这与我们的Legance软件有关。它是使用Python2.5和enthunk.permissions设计的。我正在升级到Python2.7,遇到了这个问题。非常感谢你的建议。我在apptools.permissions中查看了init.py,它没有declare\u名称空间。我把它加进去,然后一切都好了。也许,我们需要找到一个更好的名称空间来填充它在未来。如果你能给我任何建议,我会很高兴的。非常感谢。