I cannot import modules
First, very basic question. I literally cannot enter a change in the python text unless I swipe left. When I hit a button and the change registers the drop box will remain up and I cannot get it go down unless I swipe left. Surely, this was not the designers intention.
Second, I've got my python files on my phone but when I run my program and it tries to import another module I get an error. The error message is:
cannot import module __main__.dictionary_new.py
I have the dictionary_new.py open in the external files. I'm thinking that maybe my problem is that I cannot get the pycache folder into my phone. I touch the pycache folder which has a dictionary_new.pyc file in it but nothing happens when I click on it. Could that be the reason why the module is not being imported?
I didn't have '.py' attached to begin with. Here is the exact syntax I'm using:
from openpyxl import load_workbook
from collections import Counter
from pprint import pprint
from dictionary_new import large_dict
from claims_new import pop_sent
from start_and_stop import info
Everything works until I hit
from dictionary_newand it says the module is not found.
That code clearly works on my laptop but it is not working on pythonista 3. I have the dictionary_new file in my external files, the same place as the file I'm using. Are you it doesn't have something to do with
Also I didn't get an answer to the very basic necessity of being able to input changes into the file and exiting the editor without having to swipe left.
Don't have iPad around, but I assume that external files / bookmarks are not in sys.path. Try to add it to sys.path before importing. Works on desktop is irrelevant, IDE can add it, etc.
Try adding a leading dot as in
from .dictionary_new import large_dict.
Is your laptop running Python 3 or legacy Python (
Don't use relative imports. They also don't work outside of package.
sys.pathcontains system paths and site-packages, -2, -3. Current / script dir is not in
If it works on desktop, IDE is probably adding it as I wrote. At least PyCharm does this for example.
What can you do?
def a(): print('A')
b.pyin the same folder:
import sys import os sys.path.insert(0, os.path.dirname(__file__)) import a a.a()
Putting a dot in front of the files doesn't work. I'm using Python 3.6. I don't know what you mean by sys.path. I also still don't have an answer my question about how do you register changes to the code other than swiping left. To be more clear when I touch the code and make a change, a pop up keyboard appears but I cannot make this pop keyboard go away unless I swipe left. Is that how it's supposed to be done? Because that seems rather strange to me.
@zrzka Thanks for helping me out but I cannot figure out what you want me to do? I'm still quite a rookie programmer so if you could speak in a somewhat more dumbed -down language that would help out. Reading over your post I can't really figure out what you're recommending.
Can you take a step back, and describe what folders you have, and what files are in each folder? What file are you prsssing "play" on, and where is it located?
The way pythonisya works, any imports must either
1) live in the same folder as the file you pressed play on
2) live in the site-packages folder
3) live in a folder that can be found in sys.path
try this: before your import, insert the line:
import sys,os print(sys.path) print(os.path.abspath('.')) print(os.listdir())
and paste the results back here, or post to a gist.
As an aside, I am not sure if .pyc files can be imported in pythonista. Try using the .py file instead.
@bobsmith76 pressing forces keyboard to disappear
@zrzka The current script gets added to sys.path, just before it is run. So, running file a can import b in the same path.
@JonB yup, taking back my comment. Just tried on iPhone and it really works. I had to do smth wrong before.
P..S. Admire all people writing scripts on iPhone, it's a nightmare for me ;)
I tried running my other files and I'm getting [errno 1] operation not permitted. And I tried this with a very simply file which is nothing other than:
order = [0, 0, 0, "#", 11, 14, 21, 71, 73, 79, 93, 178] get_words_used = 0 proof_type = 4
I also tried running the print commands like your recommended on the main file but I get the same error message as before. Also, I tried moving the files into the folder SCRIPT LIBRARY - THIS IPOD. but that didn't help. at the very end of the error message i do get the line:
pythonista3/documents and then it lists all the files in that folder and all the files that I need to run my program are in that file.
Here, I managed to copy the error message and email it to myself. This is what it says and this is for an even more basic code. All this code says is:
And as you'll see it does print 'hey' at the bottom. Also when it says
'Examples', 'Templates', 'Welcome.md', 'init .py', 'claims_new.py', 'dictionary_new.py', 'intermed_code.py', 'new_code.py', 'site-packages-2', 'site-packages-3', 'start_and_stop.py']
Those are all the files I need to run my program. So they're all in the right place.
On second thought, I couldn't print the error message because your algorithm flagged it as spam, so you can read it here:
We can only help you if you follow instructions exactly!
Insert those lines, then run your script, and Copy the entire output, along with the entire traceback, and paste that back here. Don't summarize it, paste the entire result.
In short : if the script you are running, and the script you are importing are in the same folder, you should be able to import it. You should be using the .py file, not the .pyc, since .pyc files are not guaranteed to be compatible across versions.
You could also place the file you want to import under Modules & Libraries / site-packages (or, if it is a package, with an
__init__, then the entire folder can be in site-packages)
Also I just tried playing brickbreaker and it works on my ipod so my ipod is probably not the problem.
I told you that I tried to paste the traceback but your algorithm marked it as spam. So I pasted the traceback on another website. Did you read the traceback that I posted on the other website? Also, I have the
__init__file in the same folder as my other files. It says that on the traceback that your algorithm blocked.
Any idea what I should do now? I've done everything you told me so I don't understand why the help suddenly dried up?
This forum is not 24/7 support. Sitting in a pub, drinking beer, ... ;)
cool, what type of beer and where is the pub?
But if you try to immagine to be the person that could help you, which kind of question would you prefer?
This simple question is in my opinion the only one that could help you on posting a good question (it is valid also for me: a good question in this case is: a question that has high probability to be answered).
So, sorry if I ask you something: can you post here a full-work example of code that creates the issues you have? If you don't want to post your work for any reason (privacy, ...) you should post a full-work limited example that reproduces the big code you are trying to use.
You can use here a dropbox link (or any other kind of cloud service) in order to allow user to download your example (with folders, files, scripts, ...) and try it with his/her own device (maybe someone could have some problems about executing some arbitrary code in his/her Pythonista for security reasons, but a full-working example shared with other people makes very easy to start to understand what and where is the problem you have with your code).