I’m definitely still in the early stages of learning module/package building and deployment for python. So, take this with a grain of salt…
But I ran into a case where I wanted to develop/manipulate a package locally in PyCharm while I was actively using it in another project I was developing (actually, in a Jupyter notebook). It turns out there’s a pretty cool way to do this.
Module Preparation
The first thing I had to do was prepare the package so that it was deployable using the standard python distribution style.
In my case, I just made a directory for my package (lower-case name, underscore separators). Inside the directory, I created:
- An empty __init__.py file inside the directory (to imply it is a package).
- A setup.py file. I basically just copied the one from the documentation here: https://packaging.python.org/tutorials/packaging-projects/#packaging-your-project.
- A README.md file optionally containing some markdown syntax details about your package.
- A module/file with a python class/my code.
Here’s an example. Ignore everything that I didn’t mention; all of that is auto-generated by PyCharm and not relevant. In fact, it probably would have been better to create a sub-directory in this project for the package; but I just considered the top level directory the package directory for now.
Module Installation
Once you have your module set up like this, you can jump into your command line, assuming you have PIP installed, and you can run this command (tailored for your package directory location):
λ pip install -e C:\dev\python\jupyter_audit_query_tools Obtaining file:///C:/dev/python/jupyter_audit_query_tools Installing collected packages: PostgresQueryRunner Running setup.py develop for PostgresQueryRunner Successfully installed PostgresQueryRunner
You’ll also be able to see the package mapped to that directory when you list the packages in PIP:
λ pip list | grep postgres postgres-query-runner 1.1.0 c:\dev\python\jupyter_audit_query_tools
Module Usage
After this, you should be able to import and use the package / modules in your interpreter or notebook. You can change the code in the package and it will update in the places you’re using it assuming you re-import the package. So, in Jupyter, this would mean clicking the restart-kernel/re-run button.