Pipenv unable to install relative path that is a subdirectory of a Pipfile
See original GitHub issueIssue description
Pipenv will fail to install a relative path that is a subdirectory of a directory with a Pipfile.
Expected result
Installation to succeed.
Actual result
A resolution error is returned.
$ pipenv install .
Installing ....
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 98, in __init__
req = REQUIREMENT.parseString(requirement_string)
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1654, in parseString
raise exc
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1644, in parseString
loc, tokens = self._parse( instring, 0 )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1402, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 3417, in parseImpl
loc, exprtokens = e._parse( instring, loc, doActions )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1402, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 3739, in parseImpl
return self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1402, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 3400, in parseImpl
loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 1406, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/pyparsing.py", line 2711, in parseImpl
raise ParseException(instring, loc, self.errmsg, self)
pkg_resources._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 966, in _parse_name_from_line
self._requirement = init_requirement(self.line)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/utils.py", line 200, in init_requirement
req = Requirement.parse(name)
File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3139, in parse
req, = parse_requirements(s)
File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3084, in parse_requirements
yield Requirement(line)
File "/usr/local/lib/python3.8/site-packages/pkg_resources/__init__.py", line 3094, in __init__
super(Requirement, self).__init__(requirement_string)
File "/usr/local/lib/python3.8/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 100, in __init__
raise InvalidRequirement(
pkg_resources.extern.packaging.requirements.InvalidRequirement: Parse error at "'.'": Expected W:(abcd...)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/bin/pipenv", line 8, in <module>
sys.exit(cli())
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/pipenv/cli/command.py", line 233, in install
retcode = do_install(
File "/usr/local/lib/python3.8/site-packages/pipenv/core.py", line 2100, in do_install
pkg_requirement = Requirement.from_line(pkg_line)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 2676, in from_line
parsed_line = Line(line)
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 171, in __init__
self.parse()
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1304, in parse
self.parse_name()
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 1027, in parse_name
name = self._parse_name_from_line()
File "/usr/local/lib/python3.8/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 968, in _parse_name_from_line
raise RequirementError(
pipenv.vendor.requirementslib.exceptions.RequirementError: Failed parsing requirement from '.'
Steps to replicate
- Make an empty directory
- Cd to empty directory
- Run
pipenv install
- Clone a python package into the directory. Example can include
git clone https://github.com/sphinx-doc/sphinx.git
- Cd to subdirectory
- Run
pipenv install .
orpipenv install -e .
$ pipenv --support
Pipenv version: '2021.5.29'
Pipenv location: '/usr/local/lib/python3.8/site-packages/pipenv'
Python location: '/usr/local/opt/python@3.8/bin/python3.8'
Python installations found:
3.9.9
:/usr/local/bin/python3
3.9.9
:/usr/local/bin/python3.9
3.8.2
:/usr/bin/python3
2.7.16
:/usr/bin/python2
2.7.16
:/usr/bin/python2.7
PEP 508 Information:
{'implementation_name': 'cpython',
'implementation_version': '3.8.12',
'os_name': 'posix',
'platform_machine': 'x86_64',
'platform_python_implementation': 'CPython',
'platform_release': '20.5.0',
'platform_system': 'Darwin',
'platform_version': 'Darwin Kernel Version 20.5.0: Sat May 8 05:10:33 PDT '
'2021; root:xnu-7195.121.3~9/RELEASE_X86_64',
'python_full_version': '3.8.12',
'python_version': '3.8',
'sys_platform': 'darwin'}
System environment variables:
TERM_SESSION_ID
SSH_AUTH_SOCK
LC_TERMINAL_VERSION
COLORFGBG
ITERM_PROFILE
XPC_FLAGS
LANG
PWD
SHELL
__CFBundleIdentifier
TERM_PROGRAM_VERSION
TERM_PROGRAM
PATH
DISPLAY
LC_TERMINAL
COLORTERM
COMMAND_MODE
TERM
HOME
TMPDIR
USER
XPC_SERVICE_NAME
LOGNAME
ITERM_SESSION_ID
__CF_USER_TEXT_ENCODING
SHLVL
OLDPWD
P9K_TTY
VIRTUAL_ENV_DISABLE_PROMPT
PIPENV_VERBOSITY
LDFLAGS
CPPFLAGS
EDITOR
ZSH
PAGER
LESS
LSCOLORS
P9K_SSH
MANPATH
_
PIP_DISABLE_PIP_VERSION_CHECK
PYTHONDONTWRITEBYTECODE
PIP_SHIMS_BASE_MODULE
PIP_PYTHON_PATH
PYTHONFINDER_IGNORE_UNSUPPORTED
Pipenv–specific environment variables:
PIPENV_VERBOSITY
:-1
Debug–specific environment variables:
PATH
:/usr/local/opt/ruby/bin:/usr/local/sbin:Users/aoyansarkar/.cargo/bin:/usr/local/lib/ruby/gems/3.0.0/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin:/Library/Frameworks/Python.framework/Versions/3.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/Applications/Little Snitch.app/Contents/Components:/opt/X11/bin:/Library/Apple/usr/bin:/Users/aoyansarkar/.oh-my-zsh/custom/plugins/git-extra-commands/bin:/usr/local/opt/fzf/bin
SHELL
:/bin/zsh
EDITOR
:vim
LANG
:en_US.UTF-8
PWD
:/Volumes/RAMDisk/praw
Contents of Pipfile
(‘/Volumes/RAMDisk/Pipfile’):
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.9"
Contents of Pipfile.lock
(‘/Volumes/RAMDisk/Pipfile.lock’):
{
"_meta": {
"hash": {
"sha256": "a36a5392bb1e8bbc06bfaa0761e52593cf2d83b486696bf54667ba8da616c839"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.9"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {},
"develop": {}
}
Issue Analytics
- State:
- Created 2 years ago
- Comments:18 (4 by maintainers)
Top Results From Across the Web
pipenv: only works in a installed folder? - Stack Overflow
Yes, Pipenv only works in the directory that the Pipfile is in (or its subdirectories). If you ...
Read more >Advanced Usage of Pipenv - Python Packaging Authority
Pipenv allows you to open any Python module that is installed (including ones in your codebase), with the $ pipenv open command: $...
Read more >Pipenv & Virtual Environments
While pip can install Python packages, Pipenv is recommended as it's a ... to the absolute path to your home directory) so you'll...
Read more >Detect Pipfile file if it is located in the sub-folder of the project ...
You can read about this here. Then when you run pipenv install from the command line, the virtual environment will be created locally...
Read more >pipenv Documentation - Read the Docs
$ pipenv install --dev -e . $ cat Pipfile ... [dev-packages]. "e1839a8" = {path = ".", ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@matteius Yes, the root directory doesn’t contain a
setup.py
and is thus not recognized as a valid local requirement. The requirement parsing is performed after changing root to the project root so it fails.Let’s track this issue in: #5490