Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues with running the Editor #50

Closed
RDPEast opened this issue Jul 30, 2020 · 16 comments
Closed

Issues with running the Editor #50

RDPEast opened this issue Jul 30, 2020 · 16 comments

Comments

@RDPEast
Copy link

RDPEast commented Jul 30, 2020

It may be an idea to include the d3 file locally which was the hacky solution I've used.

@jvdwetering
Copy link
Collaborator

Hmm, or I could insert a check to see if the file can be found on the filesystem, and if not it defaults to the online copy.
Or was the problem that even forcing it to use the online copy doesn't work?

@RDPEast
Copy link
Author

RDPEast commented Aug 1, 2020

So the original problem was with using the online copy. Adding the d3 file locally was my solution to this.

@jvdwetering
Copy link
Collaborator

I still don't understand this bug. Forcing PyZX to use the online copy at https://d3js.org/d3.v5.min.js works fine for me. Which browser are you using, and which version of Jupyter?

@JoaquinKeller
Copy link

Hello,
I am having a look at pyZX and when following the "getting started" examples zx.draw does nothing. It seems to be a d3js issue.

How do I "force PyZX to use the online copy at https://d3js.org/d3.v5.min.js" ?

Thanks !

@jvdwetering
Copy link
Collaborator

Go into pyzx/utils.py and comment out the block of lines 95-104 (the try-except block).
What browser are you using?
Seeing as this is a problem for more people I think I'm just gonna bite the bullet and include a copy of d3 with pyzx.

@JoaquinKeller
Copy link

JoaquinKeller commented Aug 25, 2020 via email

@JoaquinKeller
Copy link

JoaquinKeller commented Aug 25, 2020 via email

@jvdwetering
Copy link
Collaborator

Ah yes. It doesn't work me either if I try it with jupyterlab. So it turns out that for jupyterlab you have to manually enable extensions (https://ipywidgets.readthedocs.io/en/latest/user_install.html#installing-the-jupyterlab-extension), which also requires installing node.js. But even after following the instructions I still get the javascript error that 'require' is not defined. I think this has to do with jupyterlab being a bit more strict about how you can execute javascript in a cell. To solve this would require making a separate PyZX extension to jupyterlab, which I am not going to do any time soon.

So my suggestion is to use the classic notebook interface (i.e. in jupyterlab go to Help -> Launch classic notebook)

@jvdwetering
Copy link
Collaborator

@RDPEast were you also using jupyterlab?

@RDPEast
Copy link
Author

RDPEast commented Aug 26, 2020

No I'm using the notebook, though I still rely on the hard copy of the file. I believe others (i.e Nick) have also encountered problems with just the notebook and downloading the d3 file.

@jvdwetering
Copy link
Collaborator

What does it say in the javascript console when you try it with using the online copy?

@RDPEast
Copy link
Author

RDPEast commented Aug 26, 2020

Hi John,

So this is a copy and paste from back when it didn't function (I'm loath to undo the changes I've made to my version of pyzx to double check as it was quite tempermental at first for reasons I still don't understand and I'm rather dependent on the editor at this precise moment)
image

@jvdwetering
Copy link
Collaborator

Hmm, I find it interesting that you get a script error before it says "Loading extension: jupyter-js-widgets/extension". That seems to me like an error in your jupyter server, but I really don't understand enough of this to be sure.

@jvdwetering
Copy link
Collaborator

So another thing I encountered that might explain this: If you have a Jupyter notebook with some cells loaded that include javascript, then that javascript remains when you reload the notebook. The way to get it to be "clean" so that it can find the d3 library again is to go Kernel -> Restart and Clear Output.

@hmillerbakewell
Copy link

hmillerbakewell commented Feb 24, 2021

I found I had the same issue (d3 not loading) and in my case it was caused by jupyter notebook not serving files from hidden folders. The command jupyter notebook --ContentsManager.allow_hidden=True fixed this issue. It doesn't fix the other issue with jupyter lab and require, sadly.

Edit to add: My python virtual environment is held in a folder called .venv, which is interpreted as a hidden folder because it starts with a .. Therefore trying to retrieve d3.v5.min.js from the pyzx library (which is held inside the virtual environment folder) is not allowed by jupyter's file server.

@jvdwetering
Copy link
Collaborator

I think the d3 loading issues have now all been fixed, so I'm closing this issue. Please create a new issue if new problems have arisen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants