Is anyone else experiencing an error with Stash when using pip update?
I am trying to update a number of the modules in Pythonista and when I use pip update I get an error.
As an example I am trying to run:
pip update certifi
and I get the error:
Error: package not installed: certifi
however it IS installed, but is an old version.
Thanks for any input.
I have been doing a substantial amount of debugging on Synchronator and have discovered that requests tends to be the problem. Don't get me wrong, it is a wonderful module, but it has introduced dependencies that make it tricky to use in Pythonista.
First, Synchronator is dependent on the dropbox and requests modules. HOWEVER, requests is dependent on a number of modules that MUST be there before it can run. These are certifi, chardet, idna, and urllib3. Install the latest updates of these FIRST.
Once these are installed you should be able to install requests. If you ALREADY have requests installed, it is possible that it will prevent the other modules from installing. If you encounter this uninstall requests and install the other modules first. Then reinstall requests.
I was able to do all of this with the Stash module from within Pythonista.
Just a side note, all of these modules are Python 3 compatible so they can be moved into the site-packages directory.
At this point be sure to QUIT the Pythonista app and restart it. Now you should be able to run Synchronator.
This fixes a number of the issues people have reported, that were due to old versions of the requests module.
In addition I have fixed Synchronator to preserve the case of the directories that it copies to/from Dropbox.
Sorry for the delay on my part getting to these issues.
Please exercise caution using anything dropbox related at this time. It appears that the people that maintain the requests library have introduced changes that are not backwards compatible and the dropbox package has not been updated to support the latest version of requests.
In addition the new version of requests is attempting to reference a version of urllib3 that StaSH does not have access to or is not in the repo stash is using.
All of this leads to applications like Synchronator being broken until all of these libraries are made consistent with each other.
If someone knows how to fix these issues please let me know, otherwise I am in communication with the developers at requests and dropbox trying to get this resolved.
@lhf I just commited the fix for the indent problem to the git hub repo (my bad), though you can easily fix it in Pythonista. Thanks for letting me know however. I need to pay better attention.
You will want to make sure that you have the latest requests and dropbox packages. Both changed recently and during the process of working out all their issues they did cause some.
I use StaSH and pip to install them in Pythonista, and can confirm that they seem to be working properly now.
Please let me know if that helps.
I updated the wiki at my Synchronator github page to include a page describing how update or remove the Dropbox access token.
Thanks for bringing this to my attention!
So everything I can find online seems to indicate that this was a bug that was exposed in the Requests library when Dropbox updated their library to 8.0. I hate to ever point fingers since I have caused my own share of bugs.
If you run 'pip install requests' you should get version 2.18.1 or better. They fixed the issue in their 2.17.1 release from what I can find.
After installing this later version of Requests you will need to quit Pythonista and restart it to have it load the newest versions of the libraries.
After that Synchronator should run just fine.
Keep Calm and Code Python
Sorry for the delay. I have been looking for a solution but haven't found it yet.
Someone pointed out that they think this is because something in my code is not Python 3 compatible. I have been looking at what it could be, but I realized there is a simple work-around in the interim, just put
#!/usr/bin/python2as the first line in Synchronator.py. Because Pythonista is capable of running both it should work and Synchronator will sync all files. This is why I love Pythonista!
I have updated the code on GitHub with this change.
I still want to understand what is not working, but at the moment it seems that it is failing in the dropbox package. Still more than likely something I am doing wrong but haven't found it yet.
I have also been working on a couple of tools to use Github within Pythonista. The first of which is gitter_search which allows you to explore Github users and repositiories. A second tool, gitter_pull, provides a mechanism to pull a particular Github project in to your Pythonista. I am still working on documenting and debugging all this but it can be found on Github at https://github.com/markhamilton1/Gitter.
Feedback is greatly appreciated. This should work in either Python 2 or 3.
Finished a new sync program called Synchronator to sync from Pythonista to Dropbox and visa versa. It uses the new Dropbox API (the old one is deprecated). It can be found in Github at https://github.com/markhamilton1/Synchronator. I have now been using this to sync between iPad-Dropbox-iPhone. Take a look at the project wiki at https://github.com/markhamilton1/Synchronator/wiki.
Any feedback would be appreciated. This should work in either Python 2 or 3.