Stash, pip and pylint
I just installed stash (very cool!) and wanted to use pip to install pylint. It seemed to work, but when I tried to run it I got an error saying it needed astroid. When I tried to pip install that I got a 'Failed import test. Check for dependencies' error. From comments on the forum it seemed as it would be trivial to install pylint, am I doing something wrong?
did you try pip install astroid?
iirc, pip doesn't auto download dependencies in the stash version.
I got the import error from astroid, but that one didn't specify a module. It said it extracted a requires file, but I couldn't find that. Maybe I should just google for the astroid dependencies then.
So I found out that astroid needs logilab-commons and six. Logilab-commons also needs six. I installed six, no problem, but now I can't get logilab-commons to install.
I get this error:
Trying to run setup.py
Unable to locate package. Please try manual install
Removing setup files
Failed import test. Check for dependencies
I added some traceback to the pip code and found out that the problem is that setuptools doesn't have a find_packages function. I don't understand exactly how this part of the code works, so now I'm stuck. There are people that managed to install pylint, any ideas?
Sixis already installed in Pythonista (at least in the current Beta). You should always go to the console and do
import xyzbefore you pip install modules. You might overwrite a module that Pythonista relies on with a version that has breaking changes. You can also look through https://github.com/cclauss/pythonista-module-versions
I did that for a couple of other modules, but forgot it for six 😕. I uninstalled with pip, but that doesn't change the error message. Useful link!
logilab makes extensive use of
pkg_resources, which is a little annoying on platforms that don't have easy_install. the trick is that the dependencies need to have a egg-info adjacent to the package folder on the path. I don't think pythonista supports .pth files, which is the other method. also, pythonista is missing
_osx_support.py, which makes setuptools fail.
here is a .sh script that can be run in stash which installs setuptools, six, and logilab, including egg-info folders for all of these! and creates a minimal
_osx_support.pyI realize six doesn't NEED to be reinstalled, but we'd have to fake the egg-info if we didn't.
copy this to install_llc.sh, then type
#!/bin/sh cd ~/Documents mkdir st_install cd st_install wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.0.1.tar.gz wget https://pypi.python.org/packages/source/l/logilab-common/logilab-common-1.0.2.tar.gz wget https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz tar -vzxf setuptools-18.0.1.tar.gz tar -vzxf logilab-common-1.0.2.tar.gz tar -vzxf six-1.9.0.tar.gz mv setuptools-18.0.1/setuptools ~/Documents/site-packages mv setuptools-18.0.1/pkg_resources ~/Documents/site-packages mv setuptools-18.0.1/*.egg-info ~/Documents/site-packages mv logilab-common-1.0.2/logilab ~/Documents/site-packages mv logilab-common-1.0.2/*.egg-info ~/Documents/site-packages mv six-1.9.0/six.py ~/Documents/site-packages mv six-1.9.0/*.egg-info ~/Documents/site-packages echo 'def get_platform_osx(cvar,osname,release,machine):'> ~/Documents/site-packages/_osx_support.py echo ' return osname,release,machine' >> ~/Documents/site-packages/_osx_support.py cd .. rm -rf st_install
_osx_support.pything is caused by the fact that
platform.system == 'Darwin'in both Mac OSX and iOS. Therefore, when most Python code in the wild is run in Pythonista, it thinks that it is running on a Mac.
One of the side effects of your approach above is that it upgrades the version of
sixfrom v1.6.1 to v1.9 which is hopefully all goodness.
import six print(six.__version__)
Thank you very much, @JonB! It worked like a charm!