'pipenv install' fails since version 2018.6.25 if the Pipfile contains a package reference to a Gitlab repository, like e.g.: my_package = {git = "[email protected]:gitlab_username/my_package.git", ref =
"master"}
Here, my.domain.com is a replacement for the properly resolving domain.
_Downgrading to 2018.5.18 resolves the issue._
It should install 'my_package'.
Obtaining my_package from git+ssh://[email protected]:gitlab_username/my_package.git@856f8ff9146dc7fbfc1ae3595203a9f3af8cf023#egg=my_package
Cloning ssh://[email protected]:gitlab_username/my_package.git (to revision 856f8ff9146dc7fbfc1ae3595203a9f3af8cf023) to /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/src/my_package
ssh: Could not resolve hostname my.domain.com:gitlab_username: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Command "git clone -q ssh://[email protected]:gitlab_username/my_package.git /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/src/my_package" failed with error code 128 in None
pipenv seems to append ':gitlab_username' to the domain name and as a result fails to resolve the hostname.
Replace [email protected]:gitlab_username/my_package.git correspondingly and run pipenv install
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = "2.7"
[dev-packages]
[packages]
my_package = {ref = "v1.0.0", git = "[email protected]:gitlab_username/my_package.git", editable = true}
$ pipenv --support
Pipenv version: '2018.7.1'
Pipenv location: '/home/me/.local/share/virtualenvs/my_project-WRKZN-2y/local/lib/python2.7/site-packages/pipenv'
Python location: '/home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin/python2.7'
Other Python installations in PATH
:
2.7
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin/python2.7
2.7
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin/python2.7
2.7
: /usr/bin/python2.7
3.6
: /usr/bin/python3.6m
3.6
: /usr/bin/python3.6
2.7.14
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin/python
2.7.15
: /usr/bin/python
2.7.14
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin/python2
2.7.15
: /usr/bin/python2
3.6.5
: /usr/bin/python3
PEP 508 Information:
{'implementation_name': 'cpython',
'implementation_version': '0',
'os_name': 'posix',
'platform_machine': 'x86_64',
'platform_python_implementation': 'CPython',
'platform_release': '4.15.0-24-generic',
'platform_system': 'Linux',
'platform_version': '#26-Ubuntu SMP Wed Jun 13 08:44:47 UTC 2018',
'python_full_version': '2.7.14',
'python_version': '2.7',
'sys_platform': 'linux2'}
Pipenv–specific environment variables:
PIPENV_ACTIVE
: 1
Debug–specific environment variables:
PATH
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y/bin:/home/me/.rvm/gems/ruby-2.4.1/bin:/home/me/.rvm/gems/ruby-2.4.1@global/bin:/home/me/.rvm/rubies/ruby-2.4.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/me/.rvm/bin:/home/me/.rvm/bin:/home/me/.local/bin:/home/me/.rvm/bin:/home/me/.local/bin
SHELL
: /usr/bin/zsh
LANG
: en_US.UTF-8
PWD
: /home/me/projects/my_project
VIRTUAL_ENV
: /home/me/.local/share/virtualenvs/my_project-WRKZN-2y
Contents of Pipfile
('/home/me/projects/my_project/Pipfile'):
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[requires]
python_version = "2.7"
[dev-packages]
[packages]
my_package = {ref = "v1.0.0", git = "[email protected]:gitlab_username/my_package.git", editable = true}
I believe this is fixed by #2453 via the requirementslib upgrade. In master, not released.
@uranusjr I believe this is still broken on the lock
part.
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 335, in get_legacy_dependencies
self.resolver.resolve(reqset)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 107, in resolve
self._resolve_one(requirement_set, req)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 264, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/resolve.py", line 198, in _get_abstract_dist_for
req, self.require_hashes, self.use_user_site, self.finder,
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 351, in prepare_editable_requirement
req.update_editable(not self._download_should_save)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 633, in update_editable
vcs_backend.obtain(self.source_dir)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/vcs/git.py", line 187, in obtain
self.run_command(['clone', '-q', url, dest])
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/vcs/__init__.py", line 427, in run_command
spinner=spinner)
File "/home/gonzalo.peci/.local/venvs/pipenv/lib/python3.7/site-packages/pipenv/patched/notpip/_internal/utils/misc.py", line 698, in call_subprocess
% (command_desc, proc.returncode, cwd))
pipenv.patched.notpip._internal.exceptions.InstallationError: Command "git clone -q ssh://[email protected]:org/this-package.git /tmp/tmpehxq_wdusource/this-package" failed with error code 128 in None
I assume you have noticed the exception is totally different from the top post? I don’t want to sound like an asshole, but please don’t just come in and tag people without actually thinking things through. It is really not good for anyone’s productivity.
I assume you know how to read, as I clearly said "i beleive" and on the lock
part. I know its not the exact same issue, but it might be related, and since you are the one that closed it I decided to ask before opening a new one, I notified you so you can take a look, if need be I can open a new request if you believe its different.
The typical "i dont want to be an asshole, but ill be an asshole anyway" asshole, Is not like I came here like the typical "bad software does not work, fix your issues", I was just commenting this could still be a problem.
Tagging is just a notification or call for notice to someone, and since (I repeat) you marked this as fixed, which is completely possible, I tag you so you can check and see if this is closed or not. So please you dont go saying I did not think things through when you dont really know.
This appears to still be broken, actually.
I'm using Pipenv 2018.11.26-7.fc30, and I'm seeing the exact same behavior:
nago@tsumi ~/s/M/repo (master)> pipenv lock
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
â ‹ Pinning VCS Packages...ssh: Could not resolve hostname gitlab.com:organization: Name or service not known
fatal: Could not read from remote repository.
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
repo = {editable = true, git = "[email protected]:organization/repo.git"}
Did the 2018.11 release not contain the fix candidate?
Just came across this as I'm encountering the same issue with git = "[email protected]:organization/repo.git"
type packges. This issue (like many others) is fixed in the master branch, but not in 2018.11
pip has formally deprecated git@domain:path
since 20.0, so you’re better off migrating to ssh://git@domain/path
. The deprecated form will eventually stop working in Pipenv when pip completely drops support for it.
After spending multiple hours not knowing why my installation of a private GitHub repo via ssh was failing I came across this unassuming StackOverflow answer. I'd recommend adding something like this to the pipenv docs so that people can avoid this pain--it's a tough issue to track down!
If you want to install via ssh (say, for a private repo), you'll need to modify the GitHub ssh url as follows:
[email protected]:coltonbh/my-package.git (fetch)
^ change this to a '/' character
Correct:
[email protected]/coltonbh/my-package.git
Incorrect:
[email protected]:coltonbh/my-package.git
(This is the URL GitHub provides on a repo's main page)
And the install looks like:
pipenv install -e "git+ssh://[email protected]/coltonbh/my-package.git@branch123#egg=mypgk"
Otherwise you'll get a very long install process followed by the cryptic error:
pipenv.patched.notpip._internal.exceptions.InstallationError: Command "git clone -q ssh://[email protected]:coltonbh/my-package.git /var/folders/w2/rkn1bm3d3ndclys0f81clbfw0000gn/T/requirementslib5mkvyj4m/mypgk" failed with error code 128 in None
@coltonbh +1000
Most helpful comment
After spending multiple hours not knowing why my installation of a private GitHub repo via ssh was failing I came across this unassuming StackOverflow answer. I'd recommend adding something like this to the pipenv docs so that people can avoid this pain--it's a tough issue to track down!
If you want to install via ssh (say, for a private repo), you'll need to modify the GitHub ssh url as follows:
Correct:
[email protected]/coltonbh/my-package.git
Incorrect:
[email protected]:coltonbh/my-package.git
(This is the URL GitHub provides on a repo's main page)And the install looks like:
pipenv install -e "git+ssh://[email protected]/coltonbh/my-package.git@branch123#egg=mypgk"
Otherwise you'll get a very long install process followed by the cryptic error:
pipenv.patched.notpip._internal.exceptions.InstallationError: Command "git clone -q ssh://[email protected]:coltonbh/my-package.git /var/folders/w2/rkn1bm3d3ndclys0f81clbfw0000gn/T/requirementslib5mkvyj4m/mypgk" failed with error code 128 in None