Python 2.7.12 with the latest version results in an error.Using /usr/lib/python2.7/dist-packages
Finished processing dependencies for ml-api==1.0
+ ./bin/pylint --rcfile .pylintrc api/
Traceback (most recent call last):
File "./bin/pylint", line 11, in <module>
load_entry_point('pylint==2.0.0.dev0', 'console_scripts', 'pylint')()
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/__init__.py", line 16, in run_pylint
from pylint.lint import Run
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/lint.py", line 66, in <module>
import astroid
File "/usr/me/lib/python2.7/site-packages/astroid-2.0.0.dev0-py2.7.egg/astroid/__init__.py", line 57, in <module>
from astroid.nodes import *
File "/usr/me/lib/python2.7/site-packages/astroid-2.0.0.dev0-py2.7.egg/astroid/nodes.py", line 18, in <module>
from astroid.node_classes import (
File "/usr/me/lib/python2.7/site-packages/astroid-2.0.0.dev0-py2.7.egg/astroid/node_classes.py", line 649
yield from ()
^
SyntaxError: invalid syntax
Should not error.
./bin/pylint --version
Problem importing module async.py: No module named builtins
Problem importing module async.pyc: No module named builtins
Problem importing module base.py: No module named builtins
Problem importing module base.pyc: No module named builtins
Problem importing module classes.py: cannot import name zip_longest
Problem importing module classes.pyc: cannot import name zip_longest
Problem importing module design_analysis.py: No module named builtins
Problem importing module design_analysis.pyc: No module named builtins
Problem importing module exceptions.py: No module named builtins
Problem importing module exceptions.pyc: No module named builtins
Problem importing module format.py: No module named builtins
Problem importing module format.pyc: No module named builtins
Problem importing module imports.py: No module named builtins
Problem importing module imports.pyc: No module named builtins
Problem importing module logging.py: No module named builtins
Problem importing module logging.pyc: No module named builtins
Problem importing module newstyle.py: No module named builtins
Problem importing module newstyle.pyc: No module named builtins
Problem importing module python3.py: No module named builtins
Problem importing module python3.pyc: No module named builtins
Problem importing module refactoring.py: No module named builtins
Problem importing module refactoring.pyc: No module named builtins
Problem importing module spelling.py: No module named builtins
Problem importing module spelling.pyc: No module named builtins
Problem importing module stdlib.py: No module named builtins
Problem importing module stdlib.pyc: No module named builtins
Problem importing module strings.py: No module named builtins
Problem importing module strings.pyc: No module named builtins
Traceback (most recent call last):
File "./bin/pylint", line 9, in <module>
load_entry_point('pylint==2.0.0.dev0', 'console_scripts', 'pylint')()
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/__init__.py", line 18, in run_pylint
Run(sys.argv[1:])
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/lint.py", line 1292, in __init__
linter.load_default_plugins()
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/lint.py", line 488, in load_default_plugins
checkers.initialize(self)
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/checkers/__init__.py", line 120, in initialize
register_plugins(linter, __path__[0])
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/utils.py", line 1165, in register_plugins
module = modutils.load_module_from_file(join(directory, filename))
File "/usr/local/lib/python2.7/dist-packages/astroid/modutils.py", line 272, in load_module_from_file
return load_module_from_modpath(modpath, path, use_sys)
File "/usr/local/lib/python2.7/dist-packages/astroid/modutils.py", line 233, in load_module_from_modpath
module = imp.load_module(curname, mp_file, mp_filename, mp_desc)
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/checkers/typecheck.py", line 86
yield from _flatten_container(item)
^
SyntaxError: invalid syntax
I'm not exactly sure how did you install 2.0, it is working only with Python 3. If you do pip install with Python 2, it shouldn't find 2.0.
pip<9 + pip install --pre pylint will bring in 2.0.0-dev (a bit of an edge case I guess).
There could be something missing on my machine. Here is the current state. Let me add more details.
Installing using setuptools
/usr/me$ cat req.txt
pylint
/usr/me$ cat installer.py
#!/usr/bin/env python
import os
from setuptools import setup
setup_path = os.path.dirname(__file__)
with open(os.path.join(setup_path, './req.txt'), 'r') as reqs_file:
reqs = reqs_file.readlines()
setup(
name="me",
version="1.0",
description="me",
author="me",
author_email="[email protected]",
url="",
py_modules=[],
install_requires=reqs,
)
/usr/me$ python installer.py install --prefix
...
...
Searching for pylint
Reading https://pypi.python.org/simple/pylint/
Best match: pylint 2.0.0.dev0
Downloading https://files.pythonhosted.org/packages/ac/80/9b257ea15042d950ba4a30c54eb1a5dd1357e7d4173c29f89ae71fa65db0/pylint-2.0.0.dev0.tar.gz#sha256=abd4479080046eb186612cc2aa815d3550e0f918566f422e3728188a36674d05
Processing pylint-2.0.0.dev0.tar.gz
Writing /tmp/easy_install-cw0f70/pylint-2.0.0.dev0/setup.cfg
Running pylint-2.0.0.dev0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-cw0f70/pylint-2.0.0.dev0/egg-dist-tmp-4BsZzU
Not found: ['https://github.com/PyCQA/astroid/tarball/master#egg=astroid-master-2.0']
...
...
+ python --version
Python 2.7.12
+ pip --version
pip 9.0.3 from /usr/local/lib/python2.7/dist-packages (python 2.7)
+ ./bin/pylint --version
Problem importing module async.py: No module named builtins
Problem importing module async.pyc: No module named builtins
Problem importing module base.py: No module named builtins
Problem importing module base.pyc: No module named builtins
Problem importing module classes.py: cannot import name zip_longest
Problem importing module classes.pyc: cannot import name zip_longest
Problem importing module design_analysis.py: No module named builtins
Problem importing module design_analysis.pyc: No module named builtins
Problem importing module exceptions.py: No module named builtins
Problem importing module exceptions.pyc: No module named builtins
Problem importing module format.py: No module named builtins
Problem importing module format.pyc: No module named builtins
Problem importing module imports.py: No module named builtins
Problem importing module imports.pyc: No module named builtins
Problem importing module logging.py: No module named builtins
Problem importing module logging.pyc: No module named builtins
Problem importing module newstyle.py: No module named builtins
Problem importing module newstyle.pyc: No module named builtins
Problem importing module python3.py: No module named builtins
Problem importing module python3.pyc: No module named builtins
Problem importing module refactoring.py: No module named builtins
Problem importing module refactoring.pyc: No module named builtins
Problem importing module spelling.py: No module named builtins
Problem importing module spelling.pyc: No module named builtins
Problem importing module stdlib.py: No module named builtins
Problem importing module stdlib.pyc: No module named builtins
Problem importing module strings.py: No module named builtins
Problem importing module strings.pyc: No module named builtins
Traceback (most recent call last):
File "./bin/pylint", line 9, in <module>
load_entry_point('pylint==2.0.0.dev0', 'console_scripts', 'pylint')()
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/__init__.py", line 18, in run_pylint
Run(sys.argv[1:])
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/lint.py", line 1292, in __init__
linter.load_default_plugins()
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/lint.py", line 488, in load_default_plugins
checkers.initialize(self)
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/checkers/__init__.py", line 120, in initialize
register_plugins(linter, __path__[0])
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/utils.py", line 1165, in register_plugins
module = modutils.load_module_from_file(join(directory, filename))
File "/usr/local/lib/python2.7/dist-packages/astroid/modutils.py", line 272, in load_module_from_file
return load_module_from_modpath(modpath, path, use_sys)
File "/usr/local/lib/python2.7/dist-packages/astroid/modutils.py", line 233, in load_module_from_modpath
module = imp.load_module(curname, mp_file, mp_filename, mp_desc)
File "/usr/me/lib/python2.7/site-packages/pylint-2.0.0.dev0-py2.7.egg/pylint/checkers/typecheck.py", line 86
yield from _flatten_container(item)
^
SyntaxError: invalid syntax
ah yeah, you're going through the easy_install / setuptools pathway and not the pip pathway -- I'd suggest pip install . w/ a setup.py instead :)
Thanks @asottile; I'll see whether that is possible for us.
Also seeing this via python setup.py test when pylint is in tests_require. Is your expectation that 2.0.0 would not be installed in this case for Python 2 or is a specific restriction required? I thought that modern versions of setuptools were supposed to behave the same as pip here.
EDIT: a quick grep in setuptools code suggests it does not respect this metadata, despite writing it out itself. Let me know if I missed something.
@sambrightman, are you asking me whether 2.0.0 shouldn't be installed for python 2.0?
If so, I am guessing not, as pylint 2.0.0 requires python 3. So, either setuptools should not fetch pylint 2.0.0 when running in python 2.7 that pylint 2.0.0 should be able to run on python 2.0. Ideally, it is the former.
I don't have time right now to check, but I thought that setuptools was smart enough to not install pylint if it detects that the Python version is incompatible to what pylint expects. At least I would have expected a more friendly error message rather than trying to install pylint and seeing the installation fail.
seems the python version stuff is a pip feature and not a setuptools feature -- setup.py install goes down the ~easy_install pathway which doesn't respect/handle python_requires
Easiest reproduction:
set -euxo pipefail
rm -rf venv setup.py
echo 'import setuptools;setuptools.setup(install_requires=["pylint"])' > setup.py
virtualenv venv -ppython2.7
venv/bin/python setup.py install || true
venv/bin/pip freeze --all | grep pylint
$ bash test.sh
...
Downloading https://files.pythonhosted.org/packages/52/cf/2ebc7d282f026e21eed4987e42e10964a077c13cfc168b42f3573a7f178c/typed-ast-1.1.0.tar.gz#sha256=57fe287f0cdd9ceaf69e7b71a2e94a24b5d268b35df251a88fef5cc241bf73aa
Best match: typed-ast 1.1.0
Processing typed-ast-1.1.0.tar.gz
Writing /tmp/easy_install-pzo5UK/typed-ast-1.1.0/setup.cfg
Running typed-ast-1.1.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-pzo5UK/typed-ast-1.1.0/egg-dist-tmp-MWGpiV
error: Setup script exited with Error: typed_ast only runs on Python 3.3 and above.
+ true
+ venv/bin/pip freeze --all
+ grep pylint
pylint==2.0.0.dev1
imo there's zero reason to use setup.py install / easy_install / etc. in "modern" python development (use pip install ... instead!) so this is probably not worth worrying about.
@asottile is right on this one.
OK ... in that case, we will include moving to pip in our plans.
I already use pip install but python setup.py test for testing. This invokes setuptools with the problem already mentioned by @asottile. Workaround to keep using this method is explicit version specifier in setup.py.