No executable on Windows when installing via pip #73

Closed
FichteFoll opened this Issue Jun 26, 2014 · 14 comments

Projects

None yet

7 participants

@FichteFoll

I installed pep257 0.3.2 using pip with pip install pep257, but there is noexecutable in my C:\Python33\Scripts path.

There is a Python script named pep257 (no extension) in the folder but Windows does not know run that via console. I had added .py to my PATHEXT env long ago which means entering pep257 into a shell should find it (e.g. subprocess.Popen("pep257", shell=True), so I copied the file to another one with that extension. Now my system can find the file but it fails to execute because import pep257 tries to import this very file and searches for main within, which is obviously not there.

Because of that and the shell restriction all other packages bundle an .exe that can always be found and pep257 needs one too.

@robkorv
robkorv commented Aug 20, 2014

Having this problem to. Is there a dev who can comment on this?
Is there another way to get this working on windows?

@robkorv
robkorv commented Aug 20, 2014

I just found flake8-docstrings. It's an pep257 extension for flake8 which has a windows executable when installed with pip.

@sigmavirus24
Member

What versions of pip are you using @FichteFoll and @robkorv? Also what versions of setuptools do both of you have installed?

@FichteFoll

@sigmavirus24

C:\>pip --version
pip 1.3.1 from c:\python33\lib\site-packages\pip-1.3.1-py3.3.egg (python 3.3)
C:\>easy_install --version
distribute 0.6.36
C:\>python --version
Python 3.3.1

@robkorv, I've just noticed that all .exe files in the Scripts folder are exactly the same, so I suppose they use their filename to find the appropriate python script file. In fact, you only have to copy some exe file from there, e.g. pip.exe, as pep257.exe and rename/copy the pep257 script to pep257-script.py. Then it works.

@sigmavirus24
Member

@FichteFoll I would upgrade pip anyway. The latest version is 1.5.6 and I suspect it may help. My first concern, was that pep257 was uploading wheels to PyPI but having just checked, they aren't so that rules out one possible problem

@FichteFoll
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

C:\>pip install pip --upgrade
    [...]
    Installing pip3.3-script.py script to c:\Python33\Scripts
    Installing pip3.3.exe script to c:\Python33\Scripts
    Installing pip3-script.py script to c:\Python33\Scripts
    Installing pip3.exe script to c:\Python33\Scripts
    Installing pip-script.py script to c:\Python33\Scripts
    Installing pip.exe script to c:\Python33\Scripts
    [...]

C:\>pip --version
pip 1.5.6 from c:\Python33\lib\site-packages (python 3.3)

C:\>pip uninstall pep257
Uninstalling pep257:
  c:\python33\lib\site-packages\__pycache__\pep257.cpython-33.pyc
  c:\python33\lib\site-packages\pep257-0.3.2-py3.3.egg-info
  c:\python33\lib\site-packages\pep257.py
  c:\python33\scripts\pep257
Proceed (y/n)? y
  Successfully uninstalled pep257

C:\>pip install pep257
Downloading/unpacking pep257
  Downloading pep257-0.3.2.tar.gz
  Running setup.py (path:c:\users\fichte\appdata\local\temp\pip_build_fichte\pep257\setup.py) egg_info for package pep257

Installing collected packages: pep257
  Running setup.py install for pep257

Successfully installed pep257
Cleaning up...

C:\>

I included an excerpt of pip's log to show that it installs its executables. In fact, every package with files inside Scripts has an executable there, except for pep257 - and this was ofc before I upgraded pip.

Edit: Almost forgot, but after all this no executable has been created.

@robkorv
robkorv commented Aug 21, 2014

I'm on pip 1.5.6 from C:\Python34\lib\site-packages (python 3.4), setuptools 2.1 and Python 3.4.1

@sigmavirus24
Member

Thank y'all. Time to double check pep257's setup.py.

@sigmavirus24
Member

So pep257 uses distutils + the scripts option in it's setup.py. pep8 by comparison uses setuptools + the entry_points option (which I don't think distutils supports). distutils has also been deprecated and merged into setuptools proper. pep257 should switch over, I'll send a PR soon that you all can try out.

@keleshev
Contributor

Today @fnielsen suggested a workaround; you can call pep257 as following on Windows:

python -m pep257
@myint
Member
myint commented Feb 12, 2015

@sigmavirus24, correct me if I'm wrong, but I think it is distribute rather than distutils that has been merged into setuptools.

@sigmavirus24
Member

@myint correct. Sorry about that. :)

@bilderbuchi

I also just found this bug. Is there a fix on the horizon?

@robkorv
robkorv commented May 19, 2015

You can use flake8 with flake8-docstrings on Windows.

@Nurdok Nurdok added the bug label May 23, 2015
@Nurdok Nurdok added this to the Next release milestone Sep 10, 2015
@Nurdok Nurdok closed this in #136 Sep 23, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment