Re: Trouble combining namespace packages and package_dir option in setup

Paul Ganssle <[email protected]>
Newsgroups gmane.comp.python.distutils.devel
Message-ID <[email protected]>
I've replied on this setuptools issue
<https://github.com/pypa/setuptools/issues/1754#issuecomment-488300730>,
you should be able to fix this by switching to pip install.

The core issue is that setup.py install is installing a `.egg` called
"namespace.foo" *directly into site-packages*

$ ls venv/lib/python3.7/site-packages/
easy-install.pth  namespace.foo-0.0.1-py3.7.egg  pip-19.1.dist-info 
__pycache__  setuptools-41.0.1.dist-info  wheel-0.33.1.dist-info
easy_install.py   pip                            pkg_resources      
setuptools   wheel

While pip correctly installs the "namespace" folder with a "foo" module
under it:

$ ls venv/lib/python3.7/site-packages/
easy_install.py  namespace.foo-0.0.1.dist-info  pip-19.1.dist-info 
__pycache__  setuptools-41.0.1.dist-info  wheel-0.33.1.dist-info
namespace        pip                            pkg_resources      
setuptools   wheel

Best,
Paul

On 5/1/19 10:24 AM, Alex Adamson wrote:
>
> Hello,
>
> I'm trying to create a package that has a namespace package inside a
> directory |src| below the root directory of the project. I was trying
> to follow the instructions laid out in the documentation here
> <https://setuptools.readthedocs.io/en/latest/setuptools.html#find-namespace-packages>,
> but could not get the example described there to work using setuptools
> 41.0.0:
>
> [adamson@home] {build-test-37} ~/test-pkg$ tree --charset unicode .
> .
> |-- setup.py
> `-- src
> `-- namespace
>         `-- mypackage
> |-- __init__.py
> `-- mod1.py
>
> 3 directories, 3 files
>
> [adamson@home] {build-test-37} ~/test-pkg$ cat setup.py 
> from setuptools import setup, find_namespace_packages
>
> setup(name="namespace.mypackage",
>       version="0.1",
>       package_dir={'': 'src'},
>       packages=find_namespace_packages(where='src'))
>
> [adamson@home] {build-test-37} ~/test-pkg$ conda list -e
> # This file may be used to create an environment using:
> # $ conda create --name <env> --file <this file>
> # platform: linux-64
> ca-certificates=2019.1.23=0
> certifi=2019.3.9=py37_0
> libedit=3.1.20181209=hc058e9b_0
> libffi=3.2.1=hd88cf55_4
> libgcc-ng=8.2.0=hdf63c60_1
> libstdcxx-ng=8.2.0=hdf63c60_1
> ncurses=6.1=he6710b0_1
> openssl=1.0.2r=h7b6447c_0
> pip=19.1=py37_0
> python=3.7.0=h6e4f718_3
> readline=7.0=h7b6447c_5
> setuptools=41.0.0=py37_0
> sqlite=3.28.0=h7b6447c_0
> tk=8.6.8=hbc83047_0
> wheel=0.33.1=py37_0
> xz=5.2.4=h14c3975_4
> zlib=1.2.11=h7b6447c_3
>
> [adamson@home] {build-test-37} ~/test-pkg$ python setup.py install --record files.txt
> running install
> running bdist_egg
> running egg_info
> creating src/namespace.mypackage.egg-info
> writing src/namespace.mypackage.egg-info/PKG-INFO
> writing dependency_links to src/namespace.mypackage.egg-info/dependency_links.txt
> writing top-level names to src/namespace.mypackage.egg-info/top_level.txt
> writing manifest file 'src/namespace.mypackage.egg-info/SOURCES.txt'
> package init file 'src/namespace/__init__.py' not found (or not a regular file)
> reading manifest file 'src/namespace.mypackage.egg-info/SOURCES.txt'
> writing manifest file 'src/namespace.mypackage.egg-info/SOURCES.txt'
> installing library code to build/bdist.linux-x86_64/egg
> running install_lib
> running build_py
> creating build
> creating build/lib
> creating build/lib/namespace
> creating build/lib/namespace/mypackage
> copying src/namespace/mypackage/mod1.py -> build/lib/namespace/mypackage
> copying src/namespace/mypackage/__init__.py -> build/lib/namespace/mypackage
> creating build/bdist.linux-x86_64
> creating build/bdist.linux-x86_64/egg
> creating build/bdist.linux-x86_64/egg/namespace
> creating build/bdist.linux-x86_64/egg/namespace/mypackage
> copying build/lib/namespace/mypackage/mod1.py -> build/bdist.linux-x86_64/egg/namespace/mypackage
> copying build/lib/namespace/mypackage/__init__.py -> build/bdist.linux-x86_64/egg/namespace/mypackage
> byte-compiling build/bdist.linux-x86_64/egg/namespace/mypackage/mod1.py to mod1.cpython-37.pyc
> byte-compiling build/bdist.linux-x86_64/egg/namespace/mypackage/__init__.py to __init__.cpython-37.pyc
> creating build/bdist.linux-x86_64/egg/EGG-INFO
> copying src/namespace.mypackage.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
> copying src/namespace.mypackage.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
> copying src/namespace.mypackage.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
> copying src/namespace.mypackage.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
> zip_safe flag not set; analyzing archive contents...
> creating dist
> creating 'dist/namespace.mypackage-0.1-py3.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
> removing 'build/bdist.linux-x86_64/egg' (and everything under it)
> Processing namespace.mypackage-0.1-py3.7.egg
> Copying namespace.mypackage-0.1-py3.7.egg to /nas/dft/ire/adamson/.conda/envs/build-test-37/lib/python3.7/site-packages
> Adding namespace.mypackage 0.1 to easy-install.pth file
>
> Installed /nas/dft/ire/adamson/.conda/envs/build-test-37/lib/python3.7/site-packages/namespace.mypackage-0.1-py3.7.egg
> Processing dependencies for namespace.mypackage==0.1
> Finished processing dependencies for namespace.mypackage==0.1
> writing list of installed files to 'files.txt'
>
> [adamson@home] {build-test-37} ~/test-pkg$ python -c 'import namespace.mypackage'
> Traceback (most recent call last):
>   File "<string>", line 1, in <module>
> ModuleNotFoundError: No module named 'namespace'
>
> Is there a known issue preventing |package_dir| to work with namespace
> packages? Is there a known good version of setuptools that I could use
> to package/install a project using a namespace package
> and |package_dir|? Thank you!
>
>
> - Alex
>
>
> --
> Distutils-SIG mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/distutils-sig.python.org/
> Message archived at https://mail.python.org/archives/list/[email protected]/message/G4MHKMX55XVHEF4KTH5IMKKHJASOWTLO/

--
Distutils-SIG mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/distutils-sig.python.org/
Message archived at https://mail.python.org/archives/list/[email protected]/message/3M7SWBWWJIORRZXOBKXLAEW6J4H6WKJA/
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEa0msutz2vRyiBmerzVT849lkvvsFAlzJscAACgkQzVT849lk
vvtO0A//WXP5+J7C0CCYxgU3HTeiisUILRIM4yJrnS5ebpoZZwUzLiaXrE98PJD+
F8EpQzWZ4MIS9y9kE2dv+HLemucD7y0uw3VwhozLkbpg4KJXkWZ+hQS9USd3tZqM
KduvDwAI3CO6E0HhcyTsmT1LckFd492C9vhH9gQ6hYEtf1lCFYX/y0SVEBkPGa+F
DHXGLHtywVmLXjXY+pqzBa59+VaMGGzQb1J6/K4SkeQLPoJcb2RpRJgmHUt6YLGn
GFNDDQjxPpRNW7ugYH+c+7BwqJgnm2n5IW0jYEAu95vMSSSdDoH/KNO11yJnmonj
eSgj4y6sC37Dwjwh8FRiph5uqqU3CfTZU/CQifXgScOhNZi9qKFh8Ej/PfuWnW9B
DWiykFBNRKCskHU7kSKlA0C1nvI3ueSydRWlzeHjWnl4waXAsR5gMqx1rkKCuyTE
8J1gyhSjRjjLmvFWuqi8BRyg1pgbph4k7KrN0OOeekDFNk49+uC0WAOhygW0AZNR
R80BaF52lss9wq74N9UJEfKppMlLyAQ6ZA3ZgmHoPLxm75h5JORdkOGXgJiMb28H
41mQxwml/r1FGcZUQS10dzfwjvOl5HAehvbyO0JtjkmjNE+8MEuYsQ6SjQgqSyl0
VJ1aMiGciLTivmhSlxD03G5L44xR0SsrYYbbTfL/9rvy1oq3fUY=
=bS43
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.