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

virtualenv issue #285

Closed
zackhsi opened this issue Jan 4, 2016 · 35 comments
Closed

virtualenv issue #285

zackhsi opened this issue Jan 4, 2016 · 35 comments

Comments

@zackhsi
Copy link

zackhsi commented Jan 4, 2016

I'm not exactly sure what's going on, but with a barebones requirements.txt file within a virtualenv, pip-sync is failing.

(venv)➜  pip-tools  pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)
(venv)➜  pip-tools  pip-sync
Cannot uninstall requirement appnope, not installed
Traceback (most recent call last):
  File "/usr/local/bin/pip-sync", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/piptools/scripts/sync.py", line 68, in cli
    pip_flags=pip_flags))
  File "/usr/local/lib/python2.7/site-packages/piptools/sync.py", line 137, in sync
    check_call(['pip', 'uninstall', '-y'] + pip_flags + sorted(to_uninstall))
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['pip', 'uninstall', '-y', 'appnope', 'aws-shell', 'awscli', 'boto3', 'botocore', 'colorama', 'configobj', 'decorator', 'docutils', 'flake8', 'futures', 'gnureadline', 'ipython', 'ipython-genutils', 'isort', 'jmespath', 'mccabe', 'path.py', 'pep8', 'pexpect', 'pickleshare', 'prompt-toolkit', 'ptyprocess', 'pyasn1', 'pyflakes', 'pygments', 'python-dateutil', 'requests', 'rsa', 'simplegeneric', 'speedtest-cli', 'traitlets', 'virtualenv', 'wcwidth']' returned non-zero exit status 1

In my current directory and virtual environment, pip-sync is trying to uninstall globally installed packages.

Possibly related to #277.

@jgoettsch
Copy link

I filed a related issue, #288, where it is installing into the global packages directory instead of my virtualenv. My issue only exists with 1.4.1 or newer. If you revert to 1.4.0 or earlier does it resolve your problem?

@nvie
Copy link
Member

nvie commented Jan 7, 2016

Can you double-check if this is not the same issue as this? It seems you're using a global pip as well.

@zackhsi
Copy link
Author

zackhsi commented Jan 7, 2016

Still an issue

(venv)➜  pip  which pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
(venv)➜  pip  pip --version
pip 7.1.2 from /Users/zackhsi/Desktop/pip/venv/lib/python2.7/site-packages (python 2.7)
(venv)➜  pip  pip-sync
Cannot uninstall requirement appnope, not installed
Traceback (most recent call last):
  File "/usr/local/bin/pip-sync", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/piptools/scripts/sync.py", line 68, in cli
    pip_flags=pip_flags))
  File "/usr/local/lib/python2.7/site-packages/piptools/sync.py", line 137, in sync
    check_call(['pip', 'uninstall', '-y'] + pip_flags + sorted(to_uninstall))
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['pip', 'uninstall', '-y', 'appnope', 'aws-shell', 'awscli', 'boto3', 'botocore', 'colorama', 'configobj', 'decorator', 'docutils', 'flake8', 'futures', 'gevent', 'gnureadline', 'greenlet', 'httplib2', 'ipython', 'ipython-genutils', 'isort', 'jmespath', 'lxml', 'mccabe', 'oauth2', 'path.py', 'pep8', 'pexpect', 'pickleshare', 'prompt-toolkit', 'ptyprocess', 'pyasn1', 'pyflakes', 'pygments', 'python-dateutil', 'rsa', 'simplegeneric', 'speedtest-cli', 'tinydb', 'traitlets', 'venmo', 'virtualenv', 'wcwidth']' returned non-zero exit status 1
(venv)➜  pip  which pip-sync

@nvie
Copy link
Member

nvie commented Jan 7, 2016

What's in our requirements.in and requirements.txt files, and what do these say?

$ which pip
$ pip --version
$ pip list

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

(venv)➜  pip  which pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
(venv)➜  pip  pip --version
pip 7.1.2 from /Users/zackhsi/Desktop/pip/venv/lib/python2.7/site-packages (python 2.7)
(venv)➜  pip  pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)
(venv)➜  pip  cat requirements.in
requests
(venv)➜  pip  cat requirements.txt
#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile requirements.in
#
requests==2.9.1

@nvie
Copy link
Member

nvie commented Jan 8, 2016

What's your version of pip-sync?

$ sh -c "$(dirname $(which pip-sync))/pip list | grep pip-tools"

And, what does this show you?

$ pip-sync --dry-run

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

(venv)➜  pip  sh -c "$(dirname $(which pip-sync))/pip list | grep pip-tools"
pip-tools (1.4.2)
(venv)➜  pip  pip-sync --dry-run
Would uninstall:
  configobj
  gnureadline
  ipython-genutils
  boto3
  python-dateutil
  gevent
  prompt-toolkit
  jmespath
  botocore
  speedtest-cli
  virtualenv
  lxml
  pexpect
  pep8
  tinydb
  ptyprocess
  path.py
  docutils
  traitlets
  isort
  venmo
  flake8
  appnope
  rsa
  aws-shell
  colorama
  httplib2
  ipython
  pickleshare
  decorator
  oauth2
  pyflakes
  simplegeneric
  futures
  wcwidth
  mccabe
  pygments
  greenlet
  pyasn1
  awscli

@nvie
Copy link
Member

nvie commented Jan 8, 2016

Do you have any idea what virtualenv those packages are coming from? From your earlier output

(venv)?  pip  which pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
(venv)?  pip  pip --version
pip 7.1.2 from /Users/zackhsi/Desktop/pip/venv/lib/python2.7/site-packages (python 2.7)
(venv)?  pip  pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)

It's apparently not that one.

@nvie
Copy link
Member

nvie commented Jan 8, 2016

At least we can conclude that appnope is not a special package, or is causing any issues. It's just that pip-sync ends up with the wrong virtualenv.

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

They're globally installed packages

@nvie
Copy link
Member

nvie commented Jan 8, 2016

Is that the same list as

$ sh -c "$(dirname $(which pip-sync))/pip list

would produce? I.e. that particular env?

@zackhsi zackhsi changed the title virtualenv / appnope issue virtualenv issue Jan 8, 2016
@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

Yes, same

(venv)➜  pip  sh -c "$(dirname $(which pip-sync))/pip list"
appnope (0.1.0)
aws-shell (0.1.0)
awscli (1.9.15)
boto3 (1.2.3)
botocore (1.3.15)
click (6.2)
colorama (0.3.3)
configobj (5.0.6)
decorator (4.0.6)
docutils (0.12)
first (2.0.1)
flake8 (2.5.1)
futures (3.0.3)
gevent (1.1b5)
gnureadline (6.3.3)
greenlet (0.4.9)
httplib2 (0.9.2)
ipython (4.0.1)
ipython-genutils (0.1.0)
isort (4.2.2)
jmespath (0.9.0)
lxml (3.5.0)
mccabe (0.3.1)
oauth2 (1.9.0.post1)
path.py (8.1.2)
pep8 (1.5.7)
pexpect (4.0.1)
pickleshare (0.5)
pip (7.1.2)
pip-tools (1.4.2)
prompt-toolkit (0.52)
ptyprocess (0.5)
pyasn1 (0.1.9)
pyflakes (1.0.0)
Pygments (2.0.2)
python-dateutil (2.4.2)
requests (2.9.1)
rsa (3.2.3)
setuptools (18.0.1)
simplegeneric (0.8.1)
six (1.10.0)
speedtest-cli (0.3.4)
tinydb (3.1.0)
traitlets (4.0.0)
venmo (0.2.2, /Users/zackhsi/homespace/venmo)
virtualenv (13.1.2)
wcwidth (0.1.5)
(venv)➜  pip  which pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  which pip-sync
(venv)➜  pip  which pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
(venv)➜  pip  deactivate
➜  pip  which pip
/usr/local/bin/pip

@nvie
Copy link
Member

nvie commented Jan 8, 2016

Could, by any change, your $PATH variable contain a .?

@nvie
Copy link
Member

nvie commented Jan 8, 2016

What does echo $PATH say?

@nvie
Copy link
Member

nvie commented Jan 8, 2016

The problem seems to be that pip-sync, installed globally, invokes pip and this leads to a different pip being invoked than the one that gets invoked when you run it locally in a shell that has the virtualenv activated.

Here's what happens:

  • You invoke pip-sync
  • Your shell looks at the PATH to find the binary to run
  • It checks your virtualenv first (activating it has put it on the very front of the PATH)
  • It does not find it there (since it's not installed in the virtualenv)
  • It continues with looking at PATH, and reaches the path /usr/local/bin
  • There it finds pip-sync and runs it
  • Then, pip-sync invokes pip, and this process starts again:
  • The subprocess will look at the PATH to find what binary to run for this "pip" thing
  • It SHOULD check your virtualenv first

So either, the PATH is different, or . is on the PATH (leading to the global virtualenv being found), or something else I cannot figure out from reasoning about this.

If a . is on the PATH, that's generally a thing you should avoid (many weird or dangerous things can happen in Unix from it).

Otherwise, you can also try something else: to (also) install pip-tools inside the virtualenv you want to manage. This is harmless to do, but may also cause your issue to disappear. (Still, there's a bug with this, since the global installation should also work.)

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

There are periods, but not sole period...

/Users/zackhsi/Desktop/pip/venv/bin:/Users/zackhsi/workspace/devbox/.bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/vmware/appcatalyst/bin:/Users/zackhsi/workspace/devbox/.bin:/usr/local/sbin:/Users/zackhsi/bin:/Users/zackhsi/.fzf/bin:/Users/zackhsi/bin

@nvie
Copy link
Member

nvie commented Jan 8, 2016

What's

$ which -a pip
$ which -a pip-sync

say?

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

(venv)➜  pip  which -a pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
/usr/local/bin/pip
(venv)➜  pip  which -a pip-sync
/usr/local/bin/pip-sync

@nvie
Copy link
Member

nvie commented Jan 8, 2016

What happens when you pip install pip-tools in the desired venv, and then try things again?

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

(venv)➜  pip  pip list
pip (7.1.2)
setuptools (18.2)
wheel (0.24.0)
(venv)➜  pip  which pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  pip install pip-tools
Collecting pip-tools
  Using cached pip_tools-1.4.3-py2.py3-none-any.whl
Collecting six (from pip-tools)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting click>=6 (from pip-tools)
  Using cached click-6.2-py2.py3-none-any.whl
Collecting first (from pip-tools)
  Using cached first-2.0.1-py2.py3-none-any.whl
Installing collected packages: six, click, first, pip-tools
Successfully installed click-6.2 first-2.0.1 pip-tools-1.4.3 six-1.10.0
(venv)➜  pip  pip list
click (6.2)
first (2.0.1)
pip (7.1.2)
pip-tools (1.4.3)
setuptools (18.2)
six (1.10.0)
wheel (0.24.0)
(venv)➜  pip  which pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  pip-sync
Cannot uninstall requirement appnope, not installed
Traceback (most recent call last):
  File "/usr/local/bin/pip-sync", line 11, in <module>
    sys.exit(cli())
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/piptools/scripts/sync.py", line 68, in cli
    pip_flags=pip_flags))
  File "/usr/local/lib/python2.7/site-packages/piptools/sync.py", line 137, in sync
    check_call(['pip', 'uninstall', '-y'] + pip_flags + sorted(to_uninstall))
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 540, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['pip', 'uninstall', '-y', 'appnope', 'aws-shell', 'awscli', 'boto3', 'botocore', 'colorama', 'configobj', 'decorator', 'docutils', 'flake8', 'futures', 'gevent', 'gnureadline', 'greenlet', 'httplib2', 'ipython', 'ipython-genutils', 'isort', 'jmespath', 'lxml', 'mccabe', 'oauth2', 'path.py', 'pep8', 'pexpect', 'pickleshare', 'prompt-toolkit', 'ptyprocess', 'pyasn1', 'pyflakes', 'pygments', 'python-dateutil', 'rsa', 'simplegeneric', 'speedtest-cli', 'tinydb', 'traitlets', 'venmo', 'virtualenv', 'wcwidth']' returned non-zero exit status 1

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

So, this looks like a problem:

(venv)➜  pip  which -a pip-sync
/Users/zackhsi/Desktop/pip/venv/bin/pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  which pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  echo $PATH
/Users/zackhsi/Desktop/pip/venv/bin:/Users/zackhsi/workspace/devbox/.bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/vmware/appcatalyst/bin:/Users/zackhsi/workspace/devbox/.bin:/usr/local/sbin:/Users/zackhsi/bin:/Users/zackhsi/.fzf/bin:/Users/zackhsi/bin

Why does it not use the local venv?

@nvie
Copy link
Member

nvie commented Jan 8, 2016

Oh wow, I have no idea about this. But this last example pinpoints the problem exactly. Does this only apply to the pip-tools binaries? Or is the behaviour the same for all the other binaries in that venv (if any exist)?

Purely looking at the difference between these two which commands, I'd even be inclined to conclude this is an issue in your shell, rather than pip-tools, pip, or even python…?

@zackhsi
Copy link
Author

zackhsi commented Jan 8, 2016

I'm so confused. It should pick the first occurrence in $PATH, not the last...

It works correctly for pip:

(venv)➜  pip  which pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
(venv)➜  pip  which -a pip
/Users/zackhsi/Desktop/pip/venv/bin/pip
/usr/local/bin/pip

@nvie
Copy link
Member

nvie commented Jan 11, 2016

Yes, exactly. I cannot explain this, what shell are you using?

@zackhsi
Copy link
Author

zackhsi commented Jan 22, 2016

zsh

(sorry for delay)

@alexwforsythe
Copy link

@zackhsi: what's the result of type -a pip when you're in the virtualenv?

On a related note, pip-sync doesn't seem to recognize virtualenvs for me in bash or zsh:

alex@spicylegato:~$ pip-compile requirements.in 
#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile requirements.in
#
requests==2.9.1
alex@spicylegato:~$ mkvirtualenv test
New python executable in /home/alex/.virtualenvs/test/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/alex/.virtualenvs/test/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/alex/.virtualenvs/test/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/alex/.virtualenvs/test/bin/preactivate
virtualenvwrapper.user_scripts creating /home/alex/.virtualenvs/test/bin/postactivate
virtualenvwrapper.user_scripts creating /home/alex/.virtualenvs/test/bin/get_env_details
(test) alex@spicylegato:~$ pip list
pip (8.0.2)
setuptools (20.0)
wheel (0.29.0)
(test) alex@spicylegato:~$ pip-sync -n requirements.txt 
Would uninstall:
  cryptography
  httpie
  virtualenvwrapper
  pygments
  ipython
  virtualenv
  argparse
  pbr
  virtualenv-clone
  wsgiref
  stevedore
  pyasn1

Of course, I'm invoking the global pip-sync. Should installing pip-tools inside a virtualenv be a requirement of using pip-sync to manage that virtualenv? If so, here's another interesting result:

(test) alex@spicylegato:~$ pip install pip-tools
Collecting pip-tools
  Using cached pip_tools-1.6-py2.py3-none-any.whl
Collecting six (from pip-tools)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting click>=6 (from pip-tools)
  Using cached click-6.2-py2.py3-none-any.whl
Collecting first (from pip-tools)
  Using cached first-2.0.1-py2.py3-none-any.whl
Installing collected packages: six, click, first, pip-tools
Successfully installed click-6.2 first-2.0.1 pip-tools-1.6 six-1.10.0
(test) alex@spicylegato:~$ type -a pip-sync
pip-sync is /home/alex/.virtualenvs/test/bin/pip-sync
pip-sync is /usr/local/bin/pip-sync
(test) alex@spicylegato:~$ pip-sync -n requirements.txt 
Would uninstall:
  cryptography
  httpie
  virtualenvwrapper
  pygments
  ipython
  virtualenv
  argparse
  pbr
  virtualenv-clone
  wsgiref
  stevedore
  pyasn1
(test) alex@spicylegato:~$ hash -r
(test) alex@spicylegato:~$ pip-sync -n requirements.txt 
Would install:
  requests==2.9.1

As you can see, I had to reload my shell's PATH hash table in order to use the new installation of pip-tools.

@zackhsi
Copy link
Author

zackhsi commented Feb 11, 2016

(venv) ➜  Desktop  type -a pip
pip is /Users/zackhsi/Desktop/venv/bin/pip
pip is /usr/local/bin/pip

hash -r is interesting.

@alexwforsythe
Copy link

And what's the output of type -a pip-sync and type pip-sync in the virtualenv? If it's still using the one in /usr/local/bin, I'm guessing it's shell-related. I'm using zsh with prezto, but I haven't been able to recreate your issue.

@zackhsi
Copy link
Author

zackhsi commented Feb 11, 2016

Yup

(venv) ➜  Desktop  type -a pip-sync
pip-sync is /usr/local/bin/pip-sync
(venv) ➜  Desktop  type -a pip
pip is /Users/zackhsi/Desktop/venv/bin/pip
pip is /usr/local/bin/pip

@alexwforsythe
Copy link

Weird. In your earlier comment, which -a was showing both versions of pip-sync:

So, this looks like a problem:

(venv)➜  pip  which -a pip-sync
/Users/zackhsi/Desktop/pip/venv/bin/pip-sync
/usr/local/bin/pip-sync
(venv)➜  pip  which pip-sync
/usr/local/bin/pip-sync

Did the virtualenv change?

@nvie
Copy link
Member

nvie commented Feb 14, 2016

Of course, I'm invoking the global pip-sync. Should installing pip-tools inside a virtualenv be a requirement of using pip-sync to manage that virtualenv? If so, here's another interesting result:

Since 1.6.1, you can invoke the pip tools in two ways:

  • Install it globally or locally, however you prefer, and just run pip-sync from inside an activated virtaulenv (pip-sync will install into that env, no matter if it's installed globally or locally)
  • Install it locally, don't use an activated virtualenv, but specify the full path to pip-sync, e.g. /path/to/my/local/env/bin/pip-sync whatever. That will also install packages into that local env.

Have you tried doing the above on the latest version (1.6.1)?

@alexwforsythe
Copy link

Ah, that makes sense. It took me awhile to realize that a global pip-sync isn't supposed to work on local/virtual environments. The scripts work as you say on 1.6.1. Running hash -r is still necessary to update the shell, but I don't think that's a legitimate issue.

I was thinking some combination of the following would save other users the confusion:

  1. Include virtualenv-specific instructions in the README
  2. Show a warning when invoking a global pip-sync while a virtualenv is active
  3. Update pip-sync to fetch installed distributions of a virtualenv if one is active (this would eliminate the need to install pip-tools inside virtualenvs altogether)

If you're interested, I was able to get number 3 working.

@piotr-dobrogost
Copy link

It seems the first way of invoking pip-sync described by @nvie does exactly what you describe in your point no 3.

@alexwforsythe
Copy link

It would seem so, but I'm not getting that behavior on Ubuntu:

alex@spicylegato:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.10
Release:    15.10
Codename:   wily
alex@spicylegato:~$ pip-sync --version
pip-sync, version 1.6
alex@spicylegato:~$ pip-compile requirements.in 
#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile requirements.in
#
requests==2.9.1
alex@spicylegato:~$ mkvirtualenv test
New python executable in /home/alex/.virtualenvs/test/bin/python
Installing setuptools, pip, wheel...done.
(test) alex@spicylegato:~$ pip list
pip (8.0.2)
setuptools (20.1.1)
wheel (0.29.0)
(test) alex@spicylegato:~$ hash -r
(test) alex@spicylegato:~$ type -a pip-sync 
pip-sync is /usr/local/bin/pip-sync
(test) alex@spicylegato:~$ pip-sync -n requirements.txt 
Would uninstall:
  cryptography
  pymysql
  virtualenvwrapper
  pygments
  httpie
  virtualenv
  argparse
  pbr
  virtualenv-clone
  wsgiref
  stevedore
  pyasn1

I believe it's because the shebang in the entry point script (/usr/local/bin/pip-sync) that setuptools generates for me doesn't use env to locate the python executable:

#!/usr/bin/python

As opposed to:

#!/usr/bin/env python

I found a way around this, though. I can make a new issue if this is getting too far off.

@nvie
Copy link
Member

nvie commented Feb 21, 2016

Thanks! Yes, @alexwforsythe please do make a new issue to cleanup the thread a little and have a focused discussion.

@nvie nvie closed this as completed Feb 21, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants