Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PipEnv fails installs with TypeError ('LegacySpecifier' not iterable) #4681

Closed
jpl-jengelke opened this issue Apr 23, 2021 · 24 comments
Closed
Labels
Category: Dependency Resolution Issue relates to dependency resolution. Category: Error Handling Issue relates to error handling PR: awaiting-review The PR related to this issue is awaiting review by a maintainer. Root cause found

Comments

@jpl-jengelke
Copy link

jpl-jengelke commented Apr 23, 2021

PipEnv fails some installs with an exception, TypeError: 'LegacySpecifier' object is not iterable:

$ pip3 freeze | grep pipenv
pipenv==2020.11.15

Installation should work or show an actual error related to a package. It fails on a TypeError exception without any legible problem report related to the install:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/resolver.py", line 764, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/resolver.py", line 760, in main
    dev=parsed.dev)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/resolver.py", line 741, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/resolver.py", line 709, in resolve_packages
    requirements_dir=requirements_dir,
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/resolver.py", line 692, in resolve
    req_dir=requirements_dir
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/utils.py", line 1403, in resolve_deps
    req_dir=req_dir,
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/utils.py", line 1110, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/utils.py", line 862, in resolve_constraints
    marker = marker_from_specifier(candidate.requires_python)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 719, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 288, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 187, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterable

Verbose log is attached as a file.

I believe this is related to parsing markers, e.g. importlib-metadata>=3.6 ; python_version<='3.7'. However, I have not deep dived very far into the cause.

Reproduce:

rm -r dist *.egg* ; pip3 uninstall exotic ; rm -rf Pipfile* rm -rf ~/.local/share/virtualenvs/somelocalappname*
pipenv --verbose install

You could probably reproduce it by simply installing the EXOTIC product, which is a dependency of somelocalappname:

pipenv install exotic

IT WORKS WITH AN OLDER VERSION OF PIPENV:
pip3 uninstall pipenv ; pip3 install pipenv==2018.11.26


someorgs-MacBook-Pro:somelocalappname someuser$ pipenv --support

$ pipenv --support

Pipenv version: '2020.11.15'

Pipenv location: '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pipenv'

Python location: '/Library/Frameworks/Python.framework/Versions/3.7/bin/python3'

Python installations found:

  • 3.7.3: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
  • 3.7.3: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m
  • 3.7.3: /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
  • 3.7.3: /usr/local/bin/python3
  • 3.7.3: /usr/local/bin/python3.7m
  • 3.7.3: /usr/local/bin/python3.7

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.7.3',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '19.6.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 19.6.0: Tue Jan 12 22:13:05 PST '
                     '2021; root:xnu-6153.141.16~1/RELEASE_X86_64',
 'python_full_version': '3.7.3',
 'python_version': '3.7',
 'sys_platform': 'darwin'}

System environment variables:

  • TERM_PROGRAM
  • TERM
  • SHELL
  • TESTRAIL_KEY
  • TMPDIR
  • TERM_PROGRAM_VERSION
  • OLDPWD
  • TERM_SESSION_ID
  • UID_GID
  • USER
  • TERM_SESSION_CLASS_ID
  • SSH_AUTH_SOCK
  • BASH_SILENCE_DEPRECATION_WARNING
  • MAVEN_OPTS
  • MAVEN_HOME
  • PATH
  • PWD
  • JAVA_HOME
  • LANG
  • ARTIFACTORY_PSW
  • TEST_PSW
  • PYTHONHOME
  • XPC_FLAGS
  • TESTRAIL_USER
  • XPC_SERVICE_NAME
  • ARTIFACTORY_USR
  • M2_HOME
  • HOME
  • SHLVL
  • TEST_USR
  • PYTHONPATH
  • LOGNAME
  • TESTRAIL_PSW
  • TESTRAIL_USR
  • _
  • __CF_USER_TEXT_ENCODING
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PIP_SHIMS_BASE_MODULE
  • PIP_PYTHON_PATH
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv�specific environment variables:

Debug�specific environment variables:

  • PATH: /Library/Java/JavaVirtualMachines/jdk-1.8.0_232.jdk/Contents/Home/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/someuser/Library/Python/3.7/bin:/opt/maven/latest/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin
  • SHELL: /bin/zsh
  • LANG: en_US.UTF-8
  • PWD: /proj/survey-ws/source/somelocalappname

Contents of Pipfile ('/System/Volumes/Data/proj/survey-ws/source/somelocalappname/Pipfile'):

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
astropy = ">=4.0.1.post1"
beautifulsoup4 = "~=4.9"
dawgie = "~=1.2"
exotic = "~=0.41.0"
filelock = "~=3.0"
importlib-metadata = ">=3.6"
json2html = "~=1.3"
jdcal = "~=1.4.1"
jplephem = ">=2.14"
lmfit = "~=1.0.1"
matplotlib = ">=3.2.2"
paramiko = ">=2.7.2"
pymc3 = "~=3.9"
pytz = ">=2019.3"
pytesseract = "~=0.2.9"
python-dateutil = "~=2.8.1"
requests = "~=2.23"
scipy = "~=1.4"
skyfield = "~=1.18"
statsmodels = ">=0.12.0"
tenacity = "~=5.1"
LDTk = "~=1.4.1"
TwitterAPI = "~=2.5"

[dev-packages]

[requires]
python_version = "3.7"
@jpl-jengelke jpl-jengelke changed the title PipEnv fails installing with TypeError ('LegacySpecifier' not iterable) PipEnv fails installs with TypeError ('LegacySpecifier' not iterable) Apr 23, 2021
@jpl-jengelke
Copy link
Author

Full log attached. ...
20210422_pipenv_error.txt

@jpl-jengelke
Copy link
Author

jpl-jengelke commented Jun 11, 2021

This should be the number one issue. The current Pipenv is totally broken. It can hardly install anything if its internal requirements specification is using markers. This applies to PyPi packages and local requirements files. I have to revert back to a November 2018 version (2018.11.26) just to do anything. There was even a release after this bug report. Unacceptable.

Here are other examples of NUMEROUS broken installs:

Installing filelock~=3.0...
Adding filelock to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (5ca16f) out of date, updating to (17e093)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 764, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 758, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 741, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 702, in resolve_packages
    results, resolver = resolve(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 684, in resolve
    return resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1397, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1112, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 864, in resolve_constraints
    marker = marker_from_specifier(candidate.requires_python)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 719, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 288, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 187, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterable

Installing json2html~=1.3...
Adding json2html to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (5ca16f) out of date, updating to (6126a2)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 764, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 758, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 741, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 702, in resolve_packages
    results, resolver = resolve(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 684, in resolve
    return resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1397, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1112, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 864, in resolve_constraints
    marker = marker_from_specifier(candidate.requires_python)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 719, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 288, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 203, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 187, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterable

@jpl-jengelke
Copy link
Author

jpl-jengelke commented Jun 11, 2021

To hack around the problems ...

pip3 uninstall pipenv
pip3 install pipenv==2018.11.26

Then comment out lines in your requirements.txt file that use markers, also see this.

Then, use a script to iterate through your requirements.txt file so that if any one install breaks it does not break the entire install.

#!/usr/bin/env bash

# pipenv --clear  # only useful in 2020+ versions
rm -rf Pipfile*

while read -r d ; 
do
    if [[ "${d}" =~ ^\s*#.*$ || -z "${d}" ]] ; then
        continue
    fi
    echo "**** INSTALLING ${d} ..."
    pipenv install ${d} ;
done < ./requirements.txt

echo
echo "COMPLETE!"

exit 0

You can then hack/build/install anything that fails locally or maybe install it through an IDE.

I'm almost at my wits end with this. I might try a different virtualization solution going forward.

@matteius
Copy link
Member

matteius commented Dec 21, 2021

@jpl-jengelke I suspect that newer versions of pipenv, such as 2022.1.8 and onwards should have resolved this issue. Can you verify?

@matteius matteius closed this as completed Jan 9, 2022
@jpl-jengelke
Copy link
Author

I know this was just closed but it basically still does not work. So pipenv is unable to perform the basic resolution services that regular pip offers. I ran pipenv -r requirements.txt on the requirements file in the EXOTIC repo and it reported version resolution errors. I then ran pip on the same file and it ran fine.

What it basically shows is that pipenv is not resolving the ~= directive properly from PEP 508 as defined in the BNF notation for the version_cmp specifier.

So it's not dumping on other syntax and this is obviously progress, but it's definitely not behaving line pip, either. Problem is not fully resolved.

random-ws-id:EXOTIC jpl-jengelke$ # THIS IS JUST UPGRADING WHEEL AND SETUPTOOLS
random-ws-id:EXOTIC jpl-jengelke$ pip install --upgrade wheel
Requirement already satisfied: wheel in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (0.37.0)
Collecting wheel
  Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB)
Installing collected packages: wheel
  Attempting uninstall: wheel
    Found existing installation: wheel 0.37.0
    Uninstalling wheel-0.37.0:
      Successfully uninstalled wheel-0.37.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
exotic 1.8.4 requires pandas~=1.3, but you have pandas 1.2.5 which is incompatible.
Successfully installed wheel-0.37.1
random-ws-id:EXOTIC jpl-jengelke$ pip install --upgrade setuptools
Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (59.6.0)
Collecting setuptools
  Using cached setuptools-60.5.0-py3-none-any.whl (958 kB)
Installing collected packages: setuptools
  Attempting uninstall: setuptools
    Found existing installation: setuptools 59.6.0
    Uninstalling setuptools-59.6.0:
      Successfully uninstalled setuptools-59.6.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
exotic 1.8.4 requires pandas~=1.3, but you have pandas 1.2.5 which is incompatible.
Successfully installed setuptools-60.5.0
random-ws-id:EXOTIC jpl-jengelke$ # INSTALL PIPENV AFTER CLEANUP
random-ws-id:EXOTIC jpl-jengelke$ rm -rf Pipfile
random-ws-id:EXOTIC jpl-jengelke$ pipenv install -r requirements.txt 
Creating a Pipfile for this project...
Requirements file provided! Importing into Pipfile...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
� Locking Failed! 

ERROR:pip.subprocessor:Command errored out with exit status 1:
 command: /Users/jpl-jengelke/.local/share/virtualenvs/EXOTIC-HdolhGSJ/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pipenv-k8qltw8a-build/ultranest_a366e3c3155f42198a3c511e51f86a7b/setup.py'"'"'; __file__='"'"'/var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pipenv-k8qltw8a-build/ultranest_a366e3c3155f42198a3c511e51f86a7b/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' --no-user-cfg egg_info --egg-base /private/var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pip-pip-egg-info-pvojsvcf
     cwd: /var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pipenv-k8qltw8a-build/ultranest_a366e3c3155f42198a3c511e51f86a7b/
Complete output (5 lines):
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pipenv-k8qltw8a-build/ultranest_a366e3c3155f42198a3c511e51f86a7b/setup.py", line 9, in <module>
    from Cython.Build import cythonize
ModuleNotFoundError: No module named 'Cython'
----------------------------------------
CRITICAL:pipenv.patched.notpip._internal.resolution.resolvelib.factory:Could not find a version that satisfies the requirement ultranest~=3.3.3 (from versions: 2.0.0, 2.0.2, 2.0.3, 2.0.4, 2.1.0, 2.1.1, 2.1.2, 2.2.1, 2.2.2, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2.0, 3.2.1, 3.3.0, 3.3.2, 3.3.3)
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 743, in _main
[ResolutionFailure]:       resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 704, in resolve_packages
[ResolutionFailure]:       results, resolver = resolve(
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 685, in resolve
[ResolutionFailure]:       return resolve_deps(
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1377, in resolve_deps
[ResolutionFailure]:       results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1106, in actually_resolve_deps
[ResolutionFailure]:       resolver.resolve()
[ResolutionFailure]:   File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 884, in resolve
[ResolutionFailure]:       raise ResolutionFailure(message=str(e))
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
ERROR: No matching distribution found for ultranest~=3.3.3

random-ws-id:EXOTIC jpl-jengelke$
random-ws-id:EXOTIC jpl-jengelke$ pip freeze | grep ultranest
ultranest==3.3.3
random-ws-id:EXOTIC jpl-jengelke$ pip install -r requirements.txt 
Ignoring importlib-metadata: markers 'python_version <= "3.7"' don't match your environment
Ignoring dynesty: markers 'platform_system == "Windows"' don't match your environment
Requirement already satisfied: wheel in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (0.37.1)
Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (60.5.0)
Requirement already satisfied: python_version in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 5)) (0.0.2)
Requirement already satisfied: astroalign~=2.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 6)) (2.4)
Requirement already satisfied: astropy>=4.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 7)) (4.3.1)
Requirement already satisfied: astroquery~=0.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 8)) (0.4.3)
Requirement already satisfied: barycorrpy~=0.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 9)) (0.4.4)
Collecting cython~=0.29.25
  Downloading Cython-0.29.26-py2.py3-none-any.whl (983 kB)
     |��������������������������������| 983 kB 2.2 MB/s            
Requirement already satisfied: holoviews~=1.14 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 12)) (1.14.5)
Requirement already satisfied: LDTk~=1.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 13)) (1.7.0)
Requirement already satisfied: lmfit~=1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 14)) (1.0.2)
Requirement already satisfied: matplotlib>=3.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 15)) (3.4.3)
Requirement already satisfied: numpy~=1.20 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 16)) (1.20.3)
Collecting pandas~=1.3
  Downloading pandas-1.3.5-cp39-cp39-macosx_10_9_x86_64.whl (11.3 MB)
     |��������������������������������| 11.3 MB 14.6 MB/s            
Requirement already satisfied: panel~=0.12 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 18)) (0.12.1)
Requirement already satisfied: photutils>=0.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 19)) (1.1.0)
Requirement already satisfied: python_dateutil~=2.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 20)) (2.8.2)
Requirement already satisfied: pyvo~=1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 21)) (1.1)
Requirement already satisfied: requests~=2.26 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 22)) (2.26.0)
Requirement already satisfied: scipy~=1.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 23)) (1.7.1)
Requirement already satisfied: scikit-image~=0.18 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 24)) (0.18.2)
Requirement already satisfied: tenacity~=8.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 25)) (8.0.1)
Requirement already satisfied: ultranest~=3.3.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 26)) (3.3.3)
Requirement already satisfied: pylightcurve~=4.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 27)) (4.0.1)
Requirement already satisfied: sep in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroalign~=2.4->-r requirements.txt (line 6)) (1.2.0)
Requirement already satisfied: pyerfa>=1.7.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astropy>=4.3->-r requirements.txt (line 7)) (2.0.0)
Requirement already satisfied: six in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->-r requirements.txt (line 8)) (1.16.0)
Requirement already satisfied: beautifulsoup4>=4.3.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->-r requirements.txt (line 8)) (4.9.3)
Requirement already satisfied: html5lib>=0.999 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->-r requirements.txt (line 8)) (1.1)
Requirement already satisfied: keyring>=4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->-r requirements.txt (line 8)) (23.0.1)
Requirement already satisfied: jplephem in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from barycorrpy~=0.4->-r requirements.txt (line 9)) (2.16)
Requirement already satisfied: colorcet in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->-r requirements.txt (line 12)) (2.0.6)
Requirement already satisfied: pyviz-comms>=0.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->-r requirements.txt (line 12)) (2.0.2)
Requirement already satisfied: param<2.0,>=1.9.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->-r requirements.txt (line 12)) (1.10.1)
Requirement already satisfied: tqdm in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->-r requirements.txt (line 13)) (4.61.1)
Requirement already satisfied: semantic-version in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->-r requirements.txt (line 13)) (2.8.5)
Requirement already satisfied: traitlets in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->-r requirements.txt (line 13)) (5.0.5)
Requirement already satisfied: numba in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->-r requirements.txt (line 13)) (0.53.1)
Requirement already satisfied: asteval>=0.9.16 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0->-r requirements.txt (line 14)) (0.9.23)
Requirement already satisfied: uncertainties>=3.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0->-r requirements.txt (line 14)) (3.1.5)
Requirement already satisfied: pyparsing>=2.2.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->-r requirements.txt (line 15)) (2.4.7)
Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->-r requirements.txt (line 15)) (1.3.2)
Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->-r requirements.txt (line 15)) (0.10.0)
Requirement already satisfied: pillow>=6.2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->-r requirements.txt (line 15)) (8.2.0)
Requirement already satisfied: pytz>=2017.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pandas~=1.3->-r requirements.txt (line 17)) (2020.1)
Requirement already satisfied: bokeh<2.4.0,>=2.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->-r requirements.txt (line 18)) (2.3.2)
Requirement already satisfied: bleach in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->-r requirements.txt (line 18)) (3.3.1)
Requirement already satisfied: markdown in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->-r requirements.txt (line 18)) (3.3.4)
Requirement already satisfied: pyct>=0.4.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->-r requirements.txt (line 18)) (0.4.8)
Requirement already satisfied: mimeparse in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pyvo~=1.1->-r requirements.txt (line 21)) (0.1.3)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.26->-r requirements.txt (line 22)) (2020.4.5.1)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.26->-r requirements.txt (line 22)) (2.0.4)
Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.26->-r requirements.txt (line 22)) (2.9)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.26->-r requirements.txt (line 22)) (1.26.6)
Requirement already satisfied: tifffile>=2019.7.26 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->-r requirements.txt (line 24)) (2021.6.6)
Requirement already satisfied: PyWavelets>=1.1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->-r requirements.txt (line 24)) (1.1.1)
Requirement already satisfied: networkx>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->-r requirements.txt (line 24)) (2.5.1)
Requirement already satisfied: imageio>=2.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->-r requirements.txt (line 24)) (2.9.0)
Requirement already satisfied: corner in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from ultranest~=3.3.3->-r requirements.txt (line 26)) (2.2.1)
Requirement already satisfied: emcee>=3.0.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pylightcurve~=4.0.1->-r requirements.txt (line 27)) (3.1.1)
Requirement already satisfied: pyyaml in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pylightcurve~=4.0.1->-r requirements.txt (line 27)) (5.4.1)
Requirement already satisfied: soupsieve>1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from beautifulsoup4>=4.3.2->astroquery~=0.4->-r requirements.txt (line 8)) (2.2.1)
Requirement already satisfied: packaging>=16.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.4.0,>=2.3.0->panel~=0.12->-r requirements.txt (line 18)) (20.9)
Requirement already satisfied: Jinja2>=2.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.4.0,>=2.3.0->panel~=0.12->-r requirements.txt (line 18)) (3.0.1)
Requirement already satisfied: tornado>=5.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.4.0,>=2.3.0->panel~=0.12->-r requirements.txt (line 18)) (6.1)
Requirement already satisfied: typing-extensions>=3.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.4.0,>=2.3.0->panel~=0.12->-r requirements.txt (line 18)) (3.10.0.0)
Requirement already satisfied: webencodings in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from html5lib>=0.999->astroquery~=0.4->-r requirements.txt (line 8)) (0.5.1)
Requirement already satisfied: importlib-metadata>=3.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from keyring>=4.0->astroquery~=0.4->-r requirements.txt (line 8)) (4.6.4)
Requirement already satisfied: decorator<5,>=4.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from networkx>=2.0->scikit-image~=0.18->-r requirements.txt (line 24)) (4.4.2)
Requirement already satisfied: future in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from uncertainties>=3.0.1->lmfit~=1.0->-r requirements.txt (line 14)) (0.18.2)
Requirement already satisfied: llvmlite<0.37,>=0.36.0rc1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from numba->LDTk~=1.7->-r requirements.txt (line 13)) (0.36.0)
Requirement already satisfied: ipython-genutils in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from traitlets->LDTk~=1.7->-r requirements.txt (line 13)) (0.2.0)
Requirement already satisfied: zipp>=0.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from importlib-metadata>=3.6->keyring>=4.0->astroquery~=0.4->-r requirements.txt (line 8)) (3.4.1)
Requirement already satisfied: MarkupSafe>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from Jinja2>=2.9->bokeh<2.4.0,>=2.3.0->panel~=0.12->-r requirements.txt (line 18)) (2.0.1)
Installing collected packages: pandas, cython
  Attempting uninstall: pandas
    Found existing installation: pandas 1.2.5
    Uninstalling pandas-1.2.5:
      Successfully uninstalled pandas-1.2.5
  Attempting uninstall: cython
    Found existing installation: Cython 0.29.24
    Uninstalling Cython-0.29.24:
      Successfully uninstalled Cython-0.29.24
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
awswrangler 2.5.0 requires pandas<1.3.0,>=1.1.0, but you have pandas 1.3.5 which is incompatible.
Successfully installed cython-0.29.26 pandas-1.3.5
random-ws-id:EXOTIC jpl-jengelke$ 

@jpl-jengelke
Copy link
Author

@matteius Should I open a new issue?

@matteius matteius reopened this Jan 9, 2022
@matteius
Copy link
Member

matteius commented Jan 9, 2022

@jpl-jengelke Thanks for the reply, I have re-opened this issue and begun to investigate. I got the same original error as you for your example Pipfile, but you hypothesized:

What it basically shows is that pipenv is not resolving the ~= directive properly from PEP 508 as defined in the BNF notation for the version_cmp specifier.

So I don't think that is quite it, because to test that out, I made a requirements.txt with just:
astroquery~=0.4
Ran: pipenv install -r requirements.txt
It generated the lock file just fine and completed the install. Pipfile looks like:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
astroquery = "~=0.4"

[dev-packages]

[requires]
python_version = "3.7"

I also tried:
astroquery~=0.4 ; platform_system != "Windows"
and
astroquery~=0.4 ; python_version<='3.7'
and both worked fine as well.

Digging a little further, it seems to be an issue with the package importing Cython before it can be installed in the install_requires: https://github.com/JohannesBuchner/UltraNest/blob/master/setup.py#L9

So I ran first this:

mdavis@matt-VirtualBox:~/shared-projects/pipenv-4681$ pipenv install ultranest~=3.3.3
Installing ultranest~=3.3.3...
Error:  An error occurred while installing ultranest~=3.3.3!
Error text: Collecting ultranest~=3.3.3
  Using cached ultranest-3.3.3.tar.gz (21.5 MB)
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'error'

  ERROR: Command errored out with exit status 1:

   command: /home/mdavis/.virtualenvs/pipenv-4681-begfvitM/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-qbxundot/ultranest_287a151c47184f2db1b9b629ef9e64d4/setup.py'"'"'; __file__='"'"'/tmp/pip-install-qbxundot/ultranest_287a151c47184f2db1b9b629ef9e64d4/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-d9qth99x

       cwd: /tmp/pip-install-qbxundot/ultranest_287a151c47184f2db1b9b629ef9e64d4/

  Complete output (5 lines):
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-install-qbxundot/ultranest_287a151c47184f2db1b9b629ef9e64d4/setup.py", line 9, in <module>
      from Cython.Build import cythonize
  ModuleNotFoundError: No module named 'Cython'

  ----------------------------------------

WARNING: Discarding https://files.pythonhosted.org/packages/fe/23/b20f8528678b3497ad1c99d693b31dec4ed4a249c753d750207b1110c1fd/ultranest-3.3.3.tar.gz#sha256=e66e90ec9e933364ad0dee48a84236186979c663b640d55fdfb758618fd06aa6 (from https://pypi.org/simple/ultranest/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

ERROR: Could not find a version that satisfies the requirement ultranest~=3.3.3 (from versions: 2.0.0, 2.0.2, 2.0.3, 2.0.4, 2.1.0, 2.1.1, 2.1.2, 2.2.1, 2.2.2, 3.0.1, 3.0.2, 3.0.3, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2.0, 3.2.1, 3.3.0, 3.3.2, 3.3.3)
ERROR: No matching distribution found for ultranest~=3.3.3

This is likely caused by a bug in ultranest. Report this to its maintainers.
✘ Installation Failed 

Next ensured Cython was installed (working around the issue that is caused by ultranest) and then re-ran pipenv install ultranest~=3.3.3 which worked fine this time. Then I was able to run pipenv install -r requirements.txt just fine. So I think this issue really boils down to ultranest importing Cython before it is available.

@matteius matteius added the Type: Question ❔ This is a question or a request for support. label Jan 9, 2022
@matteius
Copy link
Member

@jpl-jengelke Feel free to open a new issue if you believe there is still one with 2022.1.8. There is also my branch that upgrades pip to 22.0.4 and that might help too but I'd like to see a new bug report that applies to the new version and doesn't pertain to just needing cython installed ahead of time to process the other requirement's setup.py

@jpl-jengelke
Copy link
Author

jpl-jengelke commented Mar 12, 2022

This ticket has nothing to do with Ultranest/Cython, which is a Red Herring. However, Cython does need to be installed preliminarily. A ticket was created in Ultranest to address this.

From the last log posted, I should bring attention to the following line:

ERROR: No matching distribution found for ultranest~=3.3.3

This is not the case. At the time this was tested (01/09/2022), Ultranest 3.3.3 had been released for four months. Bare minimum, the error message is misleading, whether there was a confounding Cython issue or not.

The below logs shows the following:

  1. Delete Pipfile in project dir.
  2. Use pip to upgrade pipenv (but it was already the latest, 2022.1.8).
  3. Use pip freeze to verify version.
  4. Use pipenv --clear to blow away any caches.
  5. List the virtualenvs dir to demonstrate that there are no current environments setup.
  6. Execute pipenv install -r requirements.txt to perform a pipenv installation. (It should auto init, right?)
  7. Then, TypeError: 'LegacySpecifier' object is not iterable. Confoundingly the filename/line where the error manifests is NOT logged. I recognize that pipenv failed to install the environment with the original error that prompted this ticket.
  8. Verify version of Pip with pip --version, and it is 22.0.3, very recent.
  9. Perform the same installation with pip which is pip install -r requirements.txt. I recognize that Pip works on the same requirements file and does not complain of specifiers. I conclude that pip works and pipenv does not work.

There were some changes I see in the dependency resolver in late 2021 to try to cut over to pip tooling. However, the markers.py source seems in certain cases to still rely on internal pipenv operations to parse specifications.

I don't know. I don't see any commits against this ticket, and the problem still persists. I suppose I could create another ticket, but it would effectively be a clone. I haven't been able to use Pipenv for over a year now. Would cloning this serve any particular purpose to help the project?

someorg:source jpl-jengelke$ rm -rf Pipfile 
someorg:source jpl-jengelke$ pip install --upgrade pipenv
Requirement already satisfied: pipenv in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (2022.1.8)
Requirement already satisfied: virtualenv in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pipenv) (20.13.3)
Requirement already satisfied: certifi in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pipenv) (2021.10.8)
Requirement already satisfied: virtualenv-clone>=0.2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pipenv) (0.5.7)
Requirement already satisfied: pip>=18.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pipenv) (22.0.3)
Requirement already satisfied: setuptools>=36.2.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pipenv) (60.9.3)
Requirement already satisfied: filelock<4,>=3.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from virtualenv->pipenv) (3.5.0)
Requirement already satisfied: platformdirs<3,>=2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from virtualenv->pipenv) (2.5.1)
Requirement already satisfied: six<2,>=1.9.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from virtualenv->pipenv) (1.16.0)
Requirement already satisfied: distlib<1,>=0.3.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from virtualenv->pipenv) (0.3.4)
WARNING: You are using pip version 22.0.3; however, version 22.0.4 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m pip install --upgrade pip' command.
someorg:source jpl-jengelke$ pip freeze | grep pipenv
pipenv==2022.1.8
someorg:source jpl-jengelke$ pipenv --clear
Clearing caches...
someorg:source jpl-jengelke$ ls -laF /Users/jpl-jengelke/.local/share/virtualenvs
total 16
drwxr-xr-x  3 jpl-jengelke  staff    96 Mar 12 13:45 ./
drwxr-xr-x  4 jpl-jengelke  staff   128 Jan 13  2020 ../
someorg:source jpl-jengelke$ pipenv install -r requirements.txt 
Creating a virtualenv for this project...
Pipfile: /System/Volumes/Data/proj/survey-ws/source/Pipfile
Using /opt/local/bin/python3.9 (3.9.7) to create virtualenv...
� Creating virtual environment...created virtual environment CPython3.9.7.final.0-64 in 544ms
  creator CPython3Posix(dest=/Users/jpl-jengelke/.local/share/virtualenvs/source-R9BoSI06, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/jpl-jengelke/Library/Application Support/virtualenv)
    added seed packages: pip==22.0.4, setuptools==60.9.3, wheel==0.37.1
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

� Successfully created virtual environment! 
Virtualenv location: /Users/jpl-jengelke/.local/share/virtualenvs/source-R9BoSI06
Creating a Pipfile for this project...
Requirements file provided! Importing into Pipfile...
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
� Locking Failed! 

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 766, in <module>
    main()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 760, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 743, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 704, in resolve_packages
    results, resolver = resolve(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/resolver.py", line 685, in resolve
    return resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1377, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 1108, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/utils.py", line 901, in resolve_constraints
    marker = marker_from_specifier(requires_python)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 714, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 286, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 200, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 200, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pipenv/vendor/requirementslib/models/markers.py", line 184, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterable

someorg:source jpl-jengelke$ pip --version
pip 22.0.3 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
someorg:source jpl-jengelke$ pip install -r requirements.txt 
Ignoring importlib-metadata: markers 'python_version < "3.8"' don't match your environment
Requirement already satisfied: astropy>=4.0.1.post1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (4.3.1)
Requirement already satisfied: beautifulsoup4~=4.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 2)) (4.10.0)
Requirement already satisfied: filelock~=3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 3)) (3.5.0)
Requirement already satisfied: json2html~=1.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 5)) (1.3.0)
Requirement already satisfied: jdcal~=1.4.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 6)) (1.4.1)
Requirement already satisfied: jplephem>=2.14 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 7)) (2.17)
Collecting ldtk~=1.4.1
  Downloading LDTk-1.4.1-py3-none-any.whl (37 kB)
Requirement already satisfied: lmfit~=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 9)) (1.0.3)
Requirement already satisfied: matplotlib>=3.2.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 10)) (3.4.3)
Requirement already satisfied: paramiko>=2.7.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 11)) (2.9.2)
Requirement already satisfied: pymc3~=3.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 12)) (3.11.4)
Requirement already satisfied: pytz>=2019.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 13)) (2021.3)
Collecting pytesseract~=0.2.9
  Downloading pytesseract-0.2.9.tar.gz (20 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: python-dateutil~=2.8.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 15)) (2.8.2)
Requirement already satisfied: requests~=2.23 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 16)) (2.27.1)
Requirement already satisfied: scipy~=1.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 17)) (1.8.0)
Requirement already satisfied: skyfield~=1.18 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 18)) (1.42)
Requirement already satisfied: statsmodels>=0.12.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 19)) (0.13.2)
Collecting tenacity~=5.1
  Downloading tenacity-5.1.5-py2.py3-none-any.whl (34 kB)
Requirement already satisfied: TwitterAPI~=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 21)) (2.7.12)
Requirement already satisfied: dawgie~=1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from -r requirements.txt (line 22)) (1.2.13)
Collecting exotic~=0.26
  Downloading exotic-0.47.2-py2.py3-none-any.whl (80 kB)
     ���������������������������������������� 80.9/80.9 KB 2.2 MB/s eta 0:00:00
Requirement already satisfied: pyerfa>=1.7.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astropy>=4.0.1.post1->-r requirements.txt (line 1)) (2.0.0.1)
Requirement already satisfied: numpy>=1.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astropy>=4.0.1.post1->-r requirements.txt (line 1)) (1.21.5)
Requirement already satisfied: soupsieve>1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from beautifulsoup4~=4.9->-r requirements.txt (line 2)) (2.3.1)
Requirement already satisfied: tqdm in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from ldtk~=1.4.1->-r requirements.txt (line 8)) (4.62.3)
Requirement already satisfied: traitlets in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from ldtk~=1.4.1->-r requirements.txt (line 8)) (5.1.1)
Requirement already satisfied: numba in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from ldtk~=1.4.1->-r requirements.txt (line 8)) (0.55.1)
Requirement already satisfied: uncertainties>=3.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0.1->-r requirements.txt (line 9)) (3.1.6)
Requirement already satisfied: asteval>=0.9.22 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0.1->-r requirements.txt (line 9)) (0.9.26)
Requirement already satisfied: pillow>=6.2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.2.2->-r requirements.txt (line 10)) (9.0.1)
Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.2.2->-r requirements.txt (line 10)) (0.11.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.2.2->-r requirements.txt (line 10)) (1.3.2)
Requirement already satisfied: pyparsing>=2.2.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.2.2->-r requirements.txt (line 10)) (2.4.7)
Requirement already satisfied: pynacl>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from paramiko>=2.7.2->-r requirements.txt (line 11)) (1.5.0)
Requirement already satisfied: bcrypt>=3.1.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from paramiko>=2.7.2->-r requirements.txt (line 11)) (3.2.0)
Requirement already satisfied: cryptography>=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from paramiko>=2.7.2->-r requirements.txt (line 11)) (36.0.1)
Requirement already satisfied: patsy>=0.5.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (0.5.2)
Requirement already satisfied: fastprogress>=0.2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (1.0.2)
Requirement already satisfied: theano-pymc==1.1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (1.1.2)
Requirement already satisfied: pandas>=0.24.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (1.4.1)
Requirement already satisfied: dill in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (0.3.4)
Requirement already satisfied: typing-extensions>=3.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (3.10.0.2)
Requirement already satisfied: arviz>=0.11.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (0.11.4)
Requirement already satisfied: cachetools>=4.2.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (5.0.0)
Requirement already satisfied: semver>=2.13.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pymc3~=3.9->-r requirements.txt (line 12)) (2.13.0)
Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from python-dateutil~=2.8.1->-r requirements.txt (line 15)) (1.16.0)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.23->-r requirements.txt (line 16)) (2021.10.8)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.23->-r requirements.txt (line 16)) (1.26.8)
Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.23->-r requirements.txt (line 16)) (3.3)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.23->-r requirements.txt (line 16)) (2.0.12)
Requirement already satisfied: sgp4>=2.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from skyfield~=1.18->-r requirements.txt (line 18)) (2.20)
Requirement already satisfied: packaging>=21.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from statsmodels>=0.12.0->-r requirements.txt (line 19)) (21.3)
Requirement already satisfied: requests-oauthlib in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from TwitterAPI~=2.5->-r requirements.txt (line 21)) (1.3.1)
Requirement already satisfied: GitPython>=2.1.11 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (3.1.26)
Requirement already satisfied: python-gnupg==0.4.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (0.4.4)
Requirement already satisfied: pyxb==1.2.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (1.2.6)
Requirement already satisfied: twisted>=18.7.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (22.1.0)
Requirement already satisfied: dawgie-pydot3==1.0.10 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (1.0.10)
Requirement already satisfied: boto3>=1.7.80 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (1.17.53)
Requirement already satisfied: pyOpenSSL>=19.1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (22.0.0)
Requirement already satisfied: transitions==0.6.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (0.6.8)
Requirement already satisfied: psycopg2-binary>=2.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (2.9.3)
Requirement already satisfied: bokeh>=1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie~=1.2->-r requirements.txt (line 22)) (2.4.2)
Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from dawgie-pydot3==1.0.10->dawgie~=1.2->-r requirements.txt (line 22)) (60.9.3)
Requirement already satisfied: barycorrpy~=0.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.4.4)
Requirement already satisfied: pyvo~=1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (1.2.1)
Requirement already satisfied: wheel in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.37.1)
Requirement already satisfied: astroquery~=0.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.4.5)
Requirement already satisfied: scikit-image~=0.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.19.1)
Requirement already satisfied: dynesty~=1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (1.1)
Requirement already satisfied: python-version in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.0.2)
Requirement already satisfied: panel~=0.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (0.12.6)
Requirement already satisfied: photutils>=0.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (1.3.0)
Requirement already satisfied: holoviews~=1.13 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (1.14.7)
Requirement already satisfied: astroalign~=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic~=0.26->-r requirements.txt (line 23)) (2.4)
Requirement already satisfied: xarray>=0.16.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from arviz>=0.11.0->pymc3~=3.9->-r requirements.txt (line 12)) (0.21.1)
Requirement already satisfied: netcdf4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from arviz>=0.11.0->pymc3~=3.9->-r requirements.txt (line 12)) (1.5.8)
Requirement already satisfied: sep in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroalign~=2.0->exotic~=0.26->-r requirements.txt (line 23)) (1.2.0)
Requirement already satisfied: keyring>=4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->exotic~=0.26->-r requirements.txt (line 23)) (23.5.0)
Requirement already satisfied: html5lib>=0.999 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->exotic~=0.26->-r requirements.txt (line 23)) (1.1)
Requirement already satisfied: cffi>=1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bcrypt>=3.1.3->paramiko>=2.7.2->-r requirements.txt (line 11)) (1.15.0)
Requirement already satisfied: PyYAML>=3.10 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh>=1.2->dawgie~=1.2->-r requirements.txt (line 22)) (5.4.1)
Requirement already satisfied: tornado>=5.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh>=1.2->dawgie~=1.2->-r requirements.txt (line 22)) (6.1)
Requirement already satisfied: Jinja2>=2.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh>=1.2->dawgie~=1.2->-r requirements.txt (line 22)) (3.0.3)
Requirement already satisfied: s3transfer<0.4.0,>=0.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from boto3>=1.7.80->dawgie~=1.2->-r requirements.txt (line 22)) (0.3.7)
Requirement already satisfied: jmespath<1.0.0,>=0.7.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from boto3>=1.7.80->dawgie~=1.2->-r requirements.txt (line 22)) (0.10.0)
Requirement already satisfied: botocore<1.21.0,>=1.20.53 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from boto3>=1.7.80->dawgie~=1.2->-r requirements.txt (line 22)) (1.20.53)
Requirement already satisfied: gitdb<5,>=4.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from GitPython>=2.1.11->dawgie~=1.2->-r requirements.txt (line 22)) (4.0.9)
Requirement already satisfied: colorcet in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.13->exotic~=0.26->-r requirements.txt (line 23)) (3.0.0)
Requirement already satisfied: pyviz-comms>=0.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.13->exotic~=0.26->-r requirements.txt (line 23)) (2.1.0)
Requirement already satisfied: param<2.0,>=1.9.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.13->exotic~=0.26->-r requirements.txt (line 23)) (1.12.0)
Requirement already satisfied: pyct>=0.4.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.9->exotic~=0.26->-r requirements.txt (line 23)) (0.4.8)
Requirement already satisfied: bleach in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.9->exotic~=0.26->-r requirements.txt (line 23)) (4.1.0)
Requirement already satisfied: markdown in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.9->exotic~=0.26->-r requirements.txt (line 23)) (3.3.6)
Requirement already satisfied: PyWavelets>=1.1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.17->exotic~=0.26->-r requirements.txt (line 23)) (1.2.0)
Requirement already satisfied: imageio>=2.4.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.17->exotic~=0.26->-r requirements.txt (line 23)) (2.16.0)
Requirement already satisfied: networkx>=2.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.17->exotic~=0.26->-r requirements.txt (line 23)) (2.6.3)
Requirement already satisfied: tifffile>=2019.7.26 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.17->exotic~=0.26->-r requirements.txt (line 23)) (2022.2.9)
Requirement already satisfied: constantly>=15.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (15.1.0)
Requirement already satisfied: hyperlink>=17.1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (21.0.0)
Requirement already satisfied: zope.interface>=4.4.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (5.4.0)
Requirement already satisfied: Automat>=0.8.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (20.2.0)
Requirement already satisfied: attrs>=19.2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (21.4.0)
Requirement already satisfied: incremental>=21.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from twisted>=18.7.0->dawgie~=1.2->-r requirements.txt (line 22)) (21.3.0)
Requirement already satisfied: future in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from uncertainties>=3.0.1->lmfit~=1.0.1->-r requirements.txt (line 9)) (0.18.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from numba->ldtk~=1.4.1->-r requirements.txt (line 8)) (0.38.0)
Requirement already satisfied: oauthlib>=3.0.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests-oauthlib->TwitterAPI~=2.5->-r requirements.txt (line 21)) (3.2.0)
Requirement already satisfied: pycparser in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko>=2.7.2->-r requirements.txt (line 11)) (2.21)
Requirement already satisfied: smmap<6,>=3.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from gitdb<5,>=4.0.1->GitPython>=2.1.11->dawgie~=1.2->-r requirements.txt (line 22)) (5.0.0)
Requirement already satisfied: webencodings in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from html5lib>=0.999->astroquery~=0.4->exotic~=0.26->-r requirements.txt (line 23)) (0.5.1)
Requirement already satisfied: MarkupSafe>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from Jinja2>=2.9->bokeh>=1.2->dawgie~=1.2->-r requirements.txt (line 22)) (2.0.1)
Requirement already satisfied: importlib-metadata>=3.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from keyring>=4.0->astroquery~=0.4->exotic~=0.26->-r requirements.txt (line 23)) (4.11.1)
Requirement already satisfied: cftime in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from netcdf4->arviz>=0.11.0->pymc3~=3.9->-r requirements.txt (line 12)) (1.5.2)
Requirement already satisfied: zipp>=0.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from importlib-metadata>=3.6->keyring>=4.0->astroquery~=0.4->exotic~=0.26->-r requirements.txt (line 23)) (3.7.0)
Building wheels for collected packages: pytesseract
  Building wheel for pytesseract (setup.py) ... done
  Created wheel for pytesseract: filename=pytesseract-0.2.9-py2.py3-none-any.whl size=20873 sha256=349a04abf5b52094021f3f59961e9de9494908e9829b9c53ea4e464bf2b2033c
  Stored in directory: /Users/jpl-jengelke/Library/Caches/pip/wheels/be/09/53/78688b0a300f21b7217d6bade39c6329c9a1094b77c59419ea
Successfully built pytesseract
Installing collected packages: tenacity, pytesseract, ldtk, exotic
  Attempting uninstall: tenacity
    Found existing installation: tenacity 8.0.1
    Uninstalling tenacity-8.0.1:
      Successfully uninstalled tenacity-8.0.1
  Attempting uninstall: pytesseract
    Found existing installation: pytesseract 0.3.8
    Uninstalling pytesseract-0.3.8:
      Successfully uninstalled pytesseract-0.3.8
  Attempting uninstall: ldtk
    Found existing installation: LDTk 1.7.0
    Uninstalling LDTk-1.7.0:
      Successfully uninstalled LDTk-1.7.0
  Attempting uninstall: exotic
    Found existing installation: exotic 1.10.0
    Uninstalling exotic-1.10.0:
      Successfully uninstalled exotic-1.10.0
Successfully installed exotic-0.47.2 ldtk-1.4.1 pytesseract-0.2.9 tenacity-5.1.5
WARNING: You are using pip version 22.0.3; however, version 22.0.4 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m pip install --upgrade pip' command.

someorg:source jpl-jengelke$ 

@matteius matteius reopened this Mar 12, 2022
@matteius
Copy link
Member

@jpl-jengelke You may have tested it on 01/09/2022 a day after pipenv 2022.1.8 came out, but your bug report says you are on version 2020.11.15 which is of course going to have problems. Can you confirm your tests with 2022.1.8 at a minimum and a bonus would be to test with the branch I referenced that is scheduled to hopefully be released in April.

@jpl-jengelke
Copy link
Author

jpl-jengelke commented Mar 12, 2022

Just to confirm, I retested just today with 2022.1.8. which is the log in my last post. I'll try to scrape some time together to test with the new branch.

@matteius Do you mean the branch named vendor-pip-22.0.3-followup-changes?

@matteius
Copy link
Member

matteius commented Mar 12, 2022

@jpl-jengelke Yes that is the one, and fwiw I am trying it right now, just installed Cython first. Its still running ... not sure how long it should take. I'll edit this message hopefully soon.
EDIT: Well I think I reproduced your bug, I was hopeful it would have been fixed as well.

(pipenv-4768) matteius@matteius-VirtualBox:~/shared-projects/pipenv-triage/pipenv-4681$ pipenv install exotic
Installing exotic...
Adding exotic to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (7ed8a8) out of date, updating to (0df0f7)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 

Traceback (most recent call last):
  File "/home/matteius/pipenv/pipenv/resolver.py", line 766, in <module>
    main()
  File "/home/matteius/pipenv/pipenv/resolver.py", line 760, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/home/matteius/pipenv/pipenv/resolver.py", line 743, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/home/matteius/pipenv/pipenv/resolver.py", line 704, in resolve_packages
    results, resolver = resolve(
  File "/home/matteius/pipenv/pipenv/resolver.py", line 685, in resolve
    return resolve_deps(
  File "/home/matteius/pipenv/pipenv/utils.py", line 1376, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/home/matteius/pipenv/pipenv/utils.py", line 1107, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/home/matteius/pipenv/pipenv/utils.py", line 900, in resolve_constraints
    marker = marker_from_specifier(requires_python)
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 714, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 286, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 200, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 200, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 184, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterable

@matteius matteius added Type: Possible Bug This issue describes a possible bug in pipenv. and removed Type: Question ❔ This is a question or a request for support. labels Mar 12, 2022
@matteius
Copy link
Member

@jpl-jengelke What needs to be determined now if this is a bug in requirementslib itself or how pipenv is using it. I will try to help with that, but it may take some time.

@matteius
Copy link
Member

@jpl-jengelke Worth noting that this has come up before in a different context I just noticed: okta/okta-sdk-python#124 (comment)

@matteius
Copy link
Member

So does work if you do install directly from the repository (I forked it in my example thinking I would need to edit setup.py because I see something odd there) but actually it just installs that way, some maybe something up with the whl file in pypi? I forget what causes it to use the LegacySpecifier over the Specifier.

pipenv install git+https://github.com/matteius/EXOTIC#egg=exotic
Installing git+https://github.com/matteius/EXOTIC#egg=exotic...
Adding exotic to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (7ed8a8) out of date, updating to (2ef560)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Updated Pipfile.lock (2ef560)!
Installing dependencies from Pipfile.lock (2ef560)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:08

@matteius
Copy link
Member

This however does not work when you download the source from pypi and extract it and try to install it that way:

pipenv install ~/shared-projects/exotic-1.10.0/
Installing /home/matteius/shared-projects/exotic-1.10.0/...
Error:  An error occurred while installing /home/matteius/shared-projects/exotic-1.10.0/!
Error text: Processing /home/matteius/shared-projects/exotic-1.10.0
  Preparing metadata (setup.py): started
  Preparing metadata (setup.py): finished with status 'error'

  error: subprocess-exited-with-error
  
  × python setup.py egg_info did not run successfully.
  │ exit code: 1
  ╰─> [30 lines of output]
      /home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
        warnings.warn(
      Traceback (most recent call last):
        File "<string>", line 2, in <module>
        File "<pip-setuptools-caller>", line 34, in <module>
        File "/home/matteius/shared-projects/exotic-1.10.0/setup.py", line 67, in <module>
          setuptools.setup(name=NAME,
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/__init__.py", line 154, in setup
          _install_setup_requires(attrs)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/__init__.py", line 148, in _install_setup_requires
          dist.fetch_build_eggs(dist.setup_requires)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/dist.py", line 826, in fetch_build_eggs
          resolved_dists = pkg_resources.working_set.resolve(
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/pkg_resources/__init__.py", line 777, in resolve
          dist = best[req.key] = env.best_match(
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1062, in best_match
          return self.obtain(req, installer)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1074, in obtain
          return installer(requirement)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/dist.py", line 921, in fetch_build_egg
          return fetch_build_egg(self, req)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/installer.py", line 87, in fetch_build_egg
          wheel.install_as_egg(dist_location)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/wheel.py", line 95, in install_as_egg
          self._install_as_egg(destination_eggdir, zf)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/wheel.py", line 103, in _install_as_egg
          self._convert_metadata(zf, destination_eggdir, dist_info, egg_info)
        File "/home/matteius/.virtualenvs/pipenv-4681-BUXZVJQT/lib/python3.10/site-packages/setuptools/wheel.py", line 149, in _convert_metadata
          os.rename(
      NotADirectoryError: [Errno 20] Not a directory: '/home/matteius/shared-projects/exotic-1.10.0/.eggs/setuptools_scm-6.4.2-py3.10.egg/EGG-INFO/METADATA' -> '/home/matteius/shared-projects/exotic-1.10.0/.eggs/setuptools_scm-6.4.2-py3.10.egg/EGG-INFO/PKG-INFO'
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

This is likely caused by a bug in exotic. Report this to its maintainers.
✘ Installation Failed 

Seems that because that package won't run python setup.py egg_info correctly.

@matteius

This comment was marked as resolved.

@jpl-jengelke
Copy link
Author

jpl-jengelke commented Mar 12, 2022

No errors with pip install <local_repo> here ... Am I missing something? What looked unusual in the setup.py, may I ask?

someorg:source jpl-jengelke$ pip3 --version
pip 22.0.3 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
someorg:source jpl-jengelke$ pip3 uninstall exotic
Found existing installation: exotic 1.9.2.dev31+gbb5fc29.d20220312
Uninstalling exotic-1.9.2.dev31+gbb5fc29.d20220312:
  Would remove:
    /Library/Frameworks/Python.framework/Versions/3.9/bin/exotic
    /Library/Frameworks/Python.framework/Versions/3.9/bin/exotic-gui
    /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/exotic-1.9.2.dev31+gbb5fc29.d20220312.dist-info/*
    /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/exotic/*
Proceed (Y/n)? Y
  Successfully uninstalled exotic-1.9.2.dev31+gbb5fc29.d20220312
someorg:source jpl-jengelke$ 
someorg:source jpl-jengelke$ cd EXOTIC
someorg:EXOTIC jpl-jengelke$ rm -r dist *.egg* build ; pip3 uninstall exotic && git checkout exotic/version.py 
rm: dist: No such file or directory
WARNING: Skipping exotic as it is not installed.
Updated 1 path from the index
someorg:EXOTIC jpl-jengelke$ cd ..
someorg:source jpl-jengelke$ pip3 install /proj/survey-ws/source/EXOTIC/
Processing /proj/survey-ws/source/EXOTIC
  Preparing metadata (setup.py) ... done
Requirement already satisfied: wheel in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.37.1)
Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (60.9.3)
Requirement already satisfied: python_version in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.0.2)
Requirement already satisfied: astroalign~=2.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (2.4)
Requirement already satisfied: astropy>=4.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (4.3.1)
Requirement already satisfied: astroquery~=0.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.4.5)
Requirement already satisfied: barycorrpy~=0.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.4.4)
Requirement already satisfied: holoviews~=1.14 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.14.7)
Requirement already satisfied: LDTk~=1.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.7.0)
Requirement already satisfied: lmfit~=1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.0.3)
Requirement already satisfied: matplotlib>=3.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (3.4.3)
Requirement already satisfied: numpy~=1.21 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.21.5)
Requirement already satisfied: pandas~=1.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.4.1)
Requirement already satisfied: panel~=0.12 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.12.6)
Requirement already satisfied: photutils>=0.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.3.0)
Requirement already satisfied: python_dateutil~=2.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (2.8.2)
Collecting pyvo~=1.2
  Downloading pyvo-1.3-py3-none-any.whl (829 kB)
     ���������������������������������������� 829.6/829.6 KB 3.7 MB/s eta 0:00:00
Requirement already satisfied: requests~=2.27 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (2.27.1)
Requirement already satisfied: scipy~=1.7 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (1.8.0)
Requirement already satisfied: scikit-image~=0.18 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.19.1)
Collecting tenacity~=8.0
  Using cached tenacity-8.0.1-py3-none-any.whl (24 kB)
Requirement already satisfied: pylightcurve~=4.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (4.0.1)
Requirement already satisfied: cython~=0.29.26 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (0.29.28)
Requirement already satisfied: ultranest~=3.3.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from exotic==1.9.2.dev31+gbb5fc29) (3.3.3)
Requirement already satisfied: sep in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroalign~=2.4->exotic==1.9.2.dev31+gbb5fc29) (1.2.0)
Requirement already satisfied: pyerfa>=1.7.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astropy>=4.3->exotic==1.9.2.dev31+gbb5fc29) (2.0.0.1)
Requirement already satisfied: keyring>=4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (23.5.0)
Requirement already satisfied: beautifulsoup4>=4.3.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (4.10.0)
Requirement already satisfied: html5lib>=0.999 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (1.1)
Requirement already satisfied: jplephem in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from barycorrpy~=0.4->exotic==1.9.2.dev31+gbb5fc29) (2.17)
Requirement already satisfied: pyviz-comms>=0.7.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->exotic==1.9.2.dev31+gbb5fc29) (2.1.0)
Requirement already satisfied: colorcet in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->exotic==1.9.2.dev31+gbb5fc29) (3.0.0)
Requirement already satisfied: param<2.0,>=1.9.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from holoviews~=1.14->exotic==1.9.2.dev31+gbb5fc29) (1.12.0)
Requirement already satisfied: numba in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->exotic==1.9.2.dev31+gbb5fc29) (0.55.1)
Requirement already satisfied: tqdm in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->exotic==1.9.2.dev31+gbb5fc29) (4.62.3)
Requirement already satisfied: semantic-version in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->exotic==1.9.2.dev31+gbb5fc29) (2.9.0)
Requirement already satisfied: traitlets in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from LDTk~=1.7->exotic==1.9.2.dev31+gbb5fc29) (5.1.1)
Requirement already satisfied: asteval>=0.9.22 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0->exotic==1.9.2.dev31+gbb5fc29) (0.9.26)
Requirement already satisfied: uncertainties>=3.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from lmfit~=1.0->exotic==1.9.2.dev31+gbb5fc29) (3.1.6)
Requirement already satisfied: kiwisolver>=1.0.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->exotic==1.9.2.dev31+gbb5fc29) (1.3.2)
Requirement already satisfied: pillow>=6.2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->exotic==1.9.2.dev31+gbb5fc29) (9.0.1)
Requirement already satisfied: cycler>=0.10 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->exotic==1.9.2.dev31+gbb5fc29) (0.11.0)
Requirement already satisfied: pyparsing>=2.2.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from matplotlib>=3.4->exotic==1.9.2.dev31+gbb5fc29) (2.4.7)
Requirement already satisfied: pytz>=2020.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pandas~=1.3->exotic==1.9.2.dev31+gbb5fc29) (2021.3)
Requirement already satisfied: pyct>=0.4.4 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (0.4.8)
Requirement already satisfied: bokeh<2.5.0,>=2.4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (2.4.2)
Requirement already satisfied: markdown in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (3.3.6)
Requirement already satisfied: bleach in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (4.1.0)
Requirement already satisfied: emcee>=3.0.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pylightcurve~=4.0.1->exotic==1.9.2.dev31+gbb5fc29) (3.1.1)
Requirement already satisfied: pyyaml in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from pylightcurve~=4.0.1->exotic==1.9.2.dev31+gbb5fc29) (5.4.1)
Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from python_dateutil~=2.8->exotic==1.9.2.dev31+gbb5fc29) (1.16.0)
Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.27->exotic==1.9.2.dev31+gbb5fc29) (3.3)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.27->exotic==1.9.2.dev31+gbb5fc29) (2.0.12)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.27->exotic==1.9.2.dev31+gbb5fc29) (2021.10.8)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests~=2.27->exotic==1.9.2.dev31+gbb5fc29) (1.26.8)
Requirement already satisfied: PyWavelets>=1.1.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->exotic==1.9.2.dev31+gbb5fc29) (1.2.0)
Requirement already satisfied: networkx>=2.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->exotic==1.9.2.dev31+gbb5fc29) (2.6.3)
Requirement already satisfied: packaging>=20.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->exotic==1.9.2.dev31+gbb5fc29) (21.3)
Requirement already satisfied: tifffile>=2019.7.26 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->exotic==1.9.2.dev31+gbb5fc29) (2022.2.9)
Requirement already satisfied: imageio>=2.4.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from scikit-image~=0.18->exotic==1.9.2.dev31+gbb5fc29) (2.16.0)
Requirement already satisfied: corner in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from ultranest~=3.3.3->exotic==1.9.2.dev31+gbb5fc29) (2.2.1)
Requirement already satisfied: soupsieve>1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from beautifulsoup4>=4.3.2->astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (2.3.1)
Requirement already satisfied: typing-extensions>=3.10.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.5.0,>=2.4.0->panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (3.10.0.2)
Requirement already satisfied: Jinja2>=2.9 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.5.0,>=2.4.0->panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (3.0.3)
Requirement already satisfied: tornado>=5.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from bokeh<2.5.0,>=2.4.0->panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (6.1)
Requirement already satisfied: webencodings in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from html5lib>=0.999->astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (0.5.1)
Requirement already satisfied: importlib-metadata>=3.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from keyring>=4.0->astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (4.11.1)
Requirement already satisfied: future in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from uncertainties>=3.0.1->lmfit~=1.0->exotic==1.9.2.dev31+gbb5fc29) (0.18.2)
Requirement already satisfied: llvmlite<0.39,>=0.38.0rc1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from numba->LDTk~=1.7->exotic==1.9.2.dev31+gbb5fc29) (0.38.0)
Requirement already satisfied: zipp>=0.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from importlib-metadata>=3.6->keyring>=4.0->astroquery~=0.4->exotic==1.9.2.dev31+gbb5fc29) (3.7.0)
Requirement already satisfied: MarkupSafe>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from Jinja2>=2.9->bokeh<2.5.0,>=2.4.0->panel~=0.12->exotic==1.9.2.dev31+gbb5fc29) (2.0.1)
Building wheels for collected packages: exotic
  Building wheel for exotic (setup.py) ... done
  Created wheel for exotic: filename=exotic-1.9.2.dev31+gbb5fc29.d20220312-py3-none-any.whl size=100805 sha256=c3af726951236756009861e2322c02457f2d4d0596af9662c8078181601ed651
  Stored in directory: /private/var/folders/0_/0mssd1656q78c47k0_yk7sn00000gp/T/pip-ephem-wheel-cache-0d3aa4pj/wheels/9d/ef/44/11c8d91c492b76eeb8165c584b21ecc6bbfe5809e3f3e47505
Successfully built exotic
Installing collected packages: tenacity, pyvo, exotic
Successfully installed exotic-1.9.2.dev31+gbb5fc29.d20220312 pyvo-1.3 tenacity-8.0.1
WARNING: You are using pip version 22.0.3; however, version 22.0.4 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3 -m pip install --upgrade pip' command.
someorg:source jpl-jengelke$ 

@matteius
Copy link
Member

My first hunch was that because pip is installing the whl file, but or some reason pipenv is trying to build it from source which we know fails with pip, but also pipenv fails to install it directly with the whl file, so its not that.

matteius@matteius-VirtualBox:~/shared-projects/pipenv-triage/pipenv-4681$ pipenv install https://files.pythonhosted.org/packages/b4/05/08b89b49183994b87d7e899bc67a9bbe1e752bedb114aca9441c95e3228a/exotic-1.10.0-py2.py3-none-any.whl
Installing https://files.pythonhosted.org/packages/b4/05/08b89b49183994b87d7e899bc67a9bbe1e752bedb114aca9441c95e3228a/exotic-1.10.0-py2.py3-none-any.whl...
Adding exotic to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (7ed8a8) out of date, updating to (42cbdc)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 

Traceback (most recent call last):
  File "/home/matteius/pipenv/pipenv/resolver.py", line 766, in <module>
    main()
  File "/home/matteius/pipenv/pipenv/resolver.py", line 760, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/home/matteius/pipenv/pipenv/resolver.py", line 743, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/home/matteius/pipenv/pipenv/resolver.py", line 704, in resolve_packages
    results, resolver = resolve(
  File "/home/matteius/pipenv/pipenv/resolver.py", line 685, in resolve
    return resolve_deps(
  File "/home/matteius/pipenv/pipenv/utils.py", line 1376, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/home/matteius/pipenv/pipenv/utils.py", line 1107, in actually_resolve_deps
    resolver.resolve_constraints()
  File "/home/matteius/pipenv/pipenv/utils.py", line 900, in resolve_constraints
    marker = marker_from_specifier(requires_python)
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 714, in marker_from_specifier
    for marker_segment in cleanup_pyspecs(spec):
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 286, in cleanup_pyspecs
    for op_and_version_type, versions in _group_by_op(tuple(specs)):
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 200, in _group_by_op
    specs = [_get_specs(x) for x in list(specs)]
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 200, in <listcomp>
    specs = [_get_specs(x) for x in list(specs)]
  File "/home/matteius/pipenv/pipenv/vendor/requirementslib/models/markers.py", line 184, in _get_specs
    for spec in set(specset):
TypeError: 'LegacySpecifier' object is not iterabl

@matteius
Copy link
Member

@jpl-jengelke Ok you are right about pip can install that directly, it just couldn't do so on my shared file system for the VM which is my own fault for cloning it there, when I moved it to my home directory pip installed it. Marking my past comment as resolved.

@matteius
Copy link
Member

@jpl-jengelke I do think it is the extra quotes in the setup.py file actually. See this: https://github.com/rzellem/EXOTIC/blob/main/setup.py#L105

There should not be single quotes inside the f'string.

TypeError: 'LegacySpecifier' object is not iterable
✘ Locking Failed! 
WE ARE HERE
>=2.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
>=2.7
WE ARE HERE
>=2.7
WE ARE HERE
!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7,<3.11
WE ARE HERE
>= 3.5
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
WE ARE HERE
>=3.8
WE ARE HERE
>=3.7,<3.11
WE ARE HERE
>=3.6
WE ARE HERE
>=3.8
WE ARE HERE
>=3.6
WE ARE HERE
>=3.5
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
WE ARE HERE
>='3.6'

@matteius
Copy link
Member

@jpl-jengelke When I fix that it works. Going to push that change to my fork and open a PR with exotic I guess. You can try my branch here: https://github.com/matteius/EXOTIC

⠇ Locking...WE ARE HERE
>=2.7
WE ARE HERE
!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7
WE ARE HERE
>= 3.5
WE ARE HERE
>=3.6
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7,<3.11
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.8
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7,<3.11
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>=2.6, !=3.0.*, !=3.1.*, !=3.2.*
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=2.7
WE ARE HERE
>=3.8
WE ARE HERE
>=3.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.6
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
WE ARE HERE
>=3.7,<3.11
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.8
WE ARE HERE
>=3.6
WE ARE HERE
!=3.0.*,!=3.1.*,!=3.2.*,>=2.7
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7
WE ARE HERE
>=2.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.8,<3.11
WE ARE HERE
>=3.7
WE ARE HERE
>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*
WE ARE HERE
>=3.6
WE ARE HERE
>=3.6
WE ARE HERE
>=3.6
WE ARE HERE
>=2.7
WE ARE HERE
>=3.8
WE ARE HERE
>=3.5
WE ARE HERE
>=2.7
WE ARE HERE
>=3.7
WE ARE HERE
>=3.7
WE ARE HERE
>3.0.0
WE ARE HERE
>=3.6
WE ARE HERE
>=3.7
WE ARE HERE
>=2.6, !=3.0.*, !=3.1.*, !=3.2.*
WE ARE HERE
>=3.8
WE ARE HERE
>=3.6
✔ Success! 
Updated Pipfile.lock (7d8c95)!
Installing dependencies from Pipfile.lock (7d8c95)...

@matteius
Copy link
Member

matteius commented Mar 13, 2022

@jpl-jengelke We'll see if it gets accepted, but I also have a PR against pipenv that echos an error if the python specifier cannot be set, but continues on. Using that branch will also solve your issue in the interim:

matteius@matteius-VirtualBox:~/shared-projects/pipenv-triage/pipenv-4963$ pipenv install exotic
Installing exotic...
Adding exotic to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (1598b0) out of date, updating to (581ac8)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Warning: Error generating python specifier for 'exotic' candidate (version 1.10.0 at https://files.pythonhosted.org/packages/b4/05/08b89b49183994b87d7e899bc67a9bbe1e752bedb114aca9441c95e3228a/exotic-1.10.0-py2.py3-none-any.whl#sha256=1099f0a2d10ea179066ad6633649519147c35e39af5d49387db8b619e7da4390 (from https://pypi.org/simple/exotic/) (requires-python:>='3.6')).  Is the specifier >='3.6' incorrectly quoted or otherwise wrong?Full error: 'LegacySpecifier' object is not iterable
Updated Pipfile.lock (581ac8)!
Installing dependencies from Pipfile.lock (581ac8)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

@matteius matteius added the PR: awaiting-review The PR related to this issue is awaiting review by a maintainer. label Mar 13, 2022
@jpl-jengelke
Copy link
Author

jpl-jengelke commented Mar 13, 2022

Agreed that the version quotes provoked an issue in pipenv but it didn't result in errors with pip. Installation fails were only experienced in pipenv. The Versioning PEPs are a bit amorphous as some indicate quotes and others don't. Also, the Setup Tools documentation lacks detail for python_requires arguments in setup.py. Anyway, as removing the quotes will only help, the PR will integrated.

Just to clear some misunderstanding, the error manifested with installing the requirements file by itself, and the requirements file doesn't reference EXOTIC. It does however contain markers, similar to importlib-metadata>=3.6 ; python_version<='3.7'. Installing only the requirements file into pipenv failed with the LegacySpecifier error.

There may have been a component of system configuration cruft confounding this. Now I've completely reset my pip and pipenv installations, including removing caches and pulling entirely new distributions. Without updating EXOTIC with the PR, the error is no longer reproducible.

Here's how I reset the environment:

rm -r dist *.egg* build Pipfile*
pip3 uninstall <app> 
cd <app_dir> && git reset --hard HEAD 
pipenv --clear 
pip uninstall pipenv 
pip cache purge 
rm -rf <path_to_virtual_envs>/<app>-<hash>
pip install pipenv (or pip install <path_to_branch_of_pipenv>)
<now proceed with reinstall>

I think we can call this closed. I'm quite certain a year ago this was a problem with the older release. If any similar errors arise again in the context of a requirements file, I will raise a new issue to cleanly indicate that. Thanks for working on Pipenv which is ultimately a great tool.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Dependency Resolution Issue relates to dependency resolution. Category: Error Handling Issue relates to error handling PR: awaiting-review The PR related to this issue is awaiting review by a maintainer. Root cause found
Projects
None yet
Development

No branches or pull requests

2 participants