Skip to content

BUG: Packaging in broken #326

Open
@Sann5

Description

@Sann5

TLDR

When installing q as a python package from the source, calling q fails because the bin package is not found (essentially because installation fails).

Reproduce the error

Let's say I want to install q as a python package using pip and the provided setup.py. Namely,

wget https://github.com/harelba/q/archive/v3.1.6.tar.gz
gunzip q-3.1.6.gz
cd q-3.1.6
conda create --name q python=3.8
conda activate q
PYTHON -m pip install . -vv 
q -h

The last command gives an error:

Traceback (most recent call last):
  File "/path/to/my/envs/q/bin/q", line 5, in <module>
    from bin.q import run_standalone
ModuleNotFoundError: No module named 'bin'

/path/to/my/envs/q/bin/q is a script that is generated by the PYTHON -m pip install . -vv for the console script defined in setup.py. It looks like this...

#!/Users/santiago/mambaforge/envs/q/bin/PYTHON
# -*- coding: utf-8 -*-
import re
import sys
from bin.q import run_standalone
if __name__ == '__main__':
  sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
  sys.exit(run_standalone())

Essentially the issue is that there is no package bin in the environment.

Solution

Adjust the setup.py as follows:

setup(
...
    package_dir={"": "bin"}, # delete this line since its not needed
    packages=setuptools.find_packages(), 
    # originally: packages=setuptools.find_packages(where="bin")
...

Additional considerations

One might want to reconsider renaming the bin folder to q (since it is quite weird to have a package named bin). Then import statements in test_suite.py and the console script in setup.py would have to be adjusted. I don't know what else could break thou.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions