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, 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 Adamson