TOPIC: INTEGRATED DEVELOPMENT ENVIRONMENTS
Loading API Keys from Linux shell environment variables in Python with Dotenv
23rd October 2025Recently, I ran into trouble with getting Python to pick up an API key that I had defined in the underlying bash environment. This was within a Python console running inside the Positron IDE for R and Python scripting. Opening up the folder containing my Python scripts within the IDE was part of the solution. The next part was creating a .env file within the same folder. A line like this was added within the new file:
export API_KEY="<API key value>"
That meant that code like the following then read in the API key in a more robust manner:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('API_KEY', 'default_value')
This imports the os module and the load_dotenv method from the dotenv package. Then, load_dotenv is executed to load the .env file and its contents. After that, the os.getenv function can assign the API key to a Python variable from the value of the environment variable.
Since this also was within a Git repository, a .gitignore file needed creating with the contents .env to avoid that file being uploaded to GitHub, which is the last place where you should be storing credentials like passwords, passphrases and API keys. While my repository may be private, the state of things at these troubled times mean that even that is no failsafe.
Fixing Python path issues after Homebrew updates on Linux Mint
30th August 2025With Python available by default, it is worth asking how the version on my main Linux workstation is made available courtesy of Homebrew. All that I suggest is that it either was needed by something else or I fancied having a newer version that was available through the Linux Mint repos. Regardless of the now vague reason for doing so, it meant that I had some work to do after running the following command to update and upgrade all my Homebrew packages:
brew update; brew upgrade
The first result was this message when I tried running a Python script afterwards:
-bash: /home/linuxbrew/.linuxbrew/bin/python3: No such file or directory
The solution was to issue the following command to re-link Python:
brew link --overwrite python@3.13
Since you may have a different version by the time that you read this, just change 3.13 above to whatever you have on your system. All was not quite sorted for me after that, though.
My next task was to make Pylance look in the right place for Python packages because they had been moved too. Initial inquiries were suggesting complex if robust solutions. Instead, I went for a simpler fix. The first step was to navigate to File > Preferences > Settings in the menus. Then, I sought out the Open Settings (JSON) icon in the top right of the interface and clicked on it to open a JSON containing VSCode settings. Once in there, I edited the file to end up with something like this:
"python.analysis.extraPaths": [
"/home/[account name]/.local/bin",
"/home/[account name]/.local/lib/python[python version]/site-packages"
]
Clearly, your [account name] and [python version] need to be filled in above. That approach works for me so far, leaving the more complex alternative for later should I come to need that.
A collection of lessons learned from using Eclipse on Ubuntu
9th July 2008I have been running into a few woes on the home computing front that may or may not give rise to a number of posts on here. While having my Windows VM's going awry on VMware is a more worrying development with my need to use a Windows-based application for my hillwalking mapping, I am going to devote this entry to a spot of bother that I started to have with Eclipse, if only because I managed to sort that one out.
Up to yesterday, I had all my offline website development stuff in a single project area for the sake of ease of testing. I suppose that I got led into this by my use of Dreamweaver and the way that it sets up what it calls Sites. Applying that same of working to Quanta Plus and NetBeans just chokes up the respective IDE's and makes them less usable. Until recently, Eclipse escaped this because it seemed to check if a file had changed when you tried editing it and asked you if you wanted the latest version. This stopped in the last few days for whatever reason, and it started to stall just like the others.
Naturally, I wanted to set it back as before, so a certain amount of investigation was in order. I ended up refreshing my installation in /usr/lib, a manual extraction of the Eclipse PDT archive, only for that not to resolve the issue. In fact, it created another one that we'll talk about later. Creating a smaller project made it all work again, and I'll be building up a number of these.
The new issue pertained to the creation and selection of the Eclipse workspace. While there was no problem using what I wanted it to use, it wouldn't remember the setting. There was more blundering about before I happened on the cause: access permissions. Then, I copied the new Eclipse files in as the root user, and that meant that Eclipse couldn't update its setting when I was running it under my own account. Running the editor using sudo sorted out the workspace selection issue for now, but a more permanent fixing such as giving myself write access to the configuration directory and its contents remains an outstanding task.
The mention of the Eclipse workspace brings me back to the way that it was working before the upheaval hit me. It does keep a copy of every file that you edit in there, and maybe more besides. Thus, having a copy of every file in the project would have meant that it didn't need to do the constant churning being performed by Quanta or NetBeans. That's the impression that I have, so I'll stick with smaller project bundles from now on. Learning all this was useful.