开发者

Python: multiple packages with multiple setup.py files

I'm having a hard time constructing my Python setup.py files to do what I want. I have one pacakge set up like this:

somestuff_root/
    setup.py
    myutils/
        __init__.py
        a/
            __init__.py
            somestuff.py

I have another package setup like this:

otherstuff_root/
    setup.py
    myutils/
        __init__.py
        b/
            __init__.py
            otherstuff.py

so things are organized in my site-packages/ directory like:

myutils/
    a/
        somestuff.py
    b/
        otherstuff.py

which is exactly what I want after installing them both with pip.

My problem is that uninstalling the second package (with pip) also wipes out the first one -- this is not what I want to happen. I would like 开发者_StackOverflow社区it just to remove myutils.b and keep myutils.a where it is.

I suspect I'm confusing things with having multiple init.py files in with myutils/ folders, but I'm not sure how else to get these to work properly.

--

Also found this helpful page:

http://www.sourceweaver.com/musings/posts/python-namespace-packages


If I'm understanding this correctly, what you are trying to set up is a namespace package (an empty package that contains other, separately installed packages), which is a feature of setuptools.

Call setuptools.setup() with a list of packages that are namespaces for the namespace_packages argument.

setup(..., namespace_packages=['myutils'], ...)

Then, create myutils/__init__.py containing only the following:

__import__('pkg_resources').declare_namespace(__name__)

Finally, in myutils/a/__init__.py and myutils/b/__init__.py call pkg_resources.declare_namespace('myutils'), which ensures that the namespace is created if a lower-level package is installed first.

I'm pretty sure that's how it works. I'm still learning setuptools so if I'm wrong, corrections are much appreciated.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜