python / python/pyperformance

Editable installation isn't working properly

Open
#319 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1k
Forks
203
Avg merge
1h 20m
Merged PRs (30d)
2

Description

If pyperformance is installed as editable pip install -e . from the git repository, it doesn't work when invoked

$ /tmp/tmpdir/prefix/bin/python3 -u -m pyperformance                                        
ERROR: pyperformance should not be run without installing first                                                                         
(consider using the dev.py script)             

The check is done by is_installed() which calls both _is_dev() and _is_devel_install() which are both broken.

The function is_dev() bases the logic on the presence of setup.py which is long gone.

The function _is_devel_install() instead check the presence of pyperformance.egg-link in the site-packages.

In my installation I have:

  • pyperformance.egg-info directory in the git repository
  • __editable___pyperformance_1_0_9_finder.py, __editable__.pyperformance-1.0.9.pth, pyperformance-1.0.9.dist-info in the site-packages

I'm trying to invoke pyperformance using a dev instance via

python3.12 /work/oss/repos/pyperformance/dev.py compile_all benchmark.conf

and it will fail eventually:

2023-10-19 15:25:52,049: Building wheels for collected packages: pyperformance                                                                                                                                                                                                   
2023-10-19 15:25:52,050:   Building editable for pyperformance (pyproject.toml): started                                                                                                                                                                                         
2023-10-19 15:25:52,885:   Building editable for pyperformance (pyproject.toml): finished with status 'done'                                                                                                                                                                     
2023-10-19 15:25:52,888:   Created wheel for pyperformance: filename=pyperformance-1.0.9-0.editable-py3-none-any.whl size=6710 sha256=159fbc3f13ae47399e04d5f7cdf5e024c3652b2ed91096f8638844238e005c0d                                                                           
2023-10-19 15:25:52,888:   Stored in directory: /tmp/pip-ephem-wheel-cache-ubyuatck/wheels/0d/04/cb/add3bede8e376e8789c834f334f1834467606bde2625d5a4ad                                                                                                                           
2023-10-19 15:25:52,896: Successfully built pyperformance                                                                                                                                                                                                                        
2023-10-19 15:25:52,922: Installing collected packages: psutil, packaging, pyperf, pyperformance                                                                                                                                                                                 
2023-10-19 15:25:53,307: Successfully installed packaging-23.2 psutil-5.9.6 pyperf-2.6.1 pyperformance-1.0.9                                                                                                                                                                     
2023-10-19 15:25:53,437: + /tmp/tmpdir/prefix/bin/python3 -u -m pyperformance venv recreate --venv /tmp/tmpdir/venv --benchmarks '<NONE>'                                                                                                                                        
2023-10-19 15:25:53,514: ERROR: pyperformance should not be run without installing first                                                                                                                                                                                         
2023-10-19 15:25:53,515: (consider using the dev.py script)                                                                                                                                                                                                                      
2023-10-19 15:25:53,523: Command /tmp/tmpdir/prefix/bin/python3 -u -m pyperformance venv recreate --venv /tmp/tmpdir/venv --benchmarks '<NONE>' failed with exit code 1                                                                                                          
2023-10-19 15:25:53,565: Command /work/oss/ENTLLT-6897/venv3.12/bin/python -m pyperformance compile /work/oss/repos/ci-scripts/projects/python/benchmark.conf be5e8a010341c4d2d28ef53a1baed402ee06466e main --no-update --no-tune failed with exit code 11                       
2023-10-19 15:25:53,565: Benchmark exit code: 11                                                                                                                                                                                                                                 
2023-10-19 15:25:53,566: FAILED: main-be5e8a010341c4d2d28ef53a1baed402ee06466e 

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in pyperformance/init.py, especially is_installed(), is_dev(), and _is_devel_install(), then inspect how dev.py creates and invokes editable installations. Reproduce the failure with pip install -e . and python -m pyperformance. Done means editable installs pass the installation check and the dev.py compile flow can invoke pyperformance successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.