• 0 Posts
  • 22 Comments
Joined 1 year ago
cake
Cake day: July 1st, 2023

help-circle


  • I have observed people taking Rust seriously. You need to reexamine your assumptions.

    We have an evolved capability to short-circuit decisions with a rapid emotional evaluation. It means as a species we didn’t die out early [“that’s a lion; I’m a oerson; lions eat people ergo… Agh!” is not a sustainable strategy] - what’s amazing is that we can also apply it to elarned abstract things like an aestetic sense about programming languages. Such instincts aren’t always perfect, but they’re still worth paying attention to. I don’t see a reason not to express that in a blog post, but you can replace it with “this is unergonomic and in some cases imprecise” if you prefer.







  • Is this problem a recurring one after a reboot?

    If it is it warrants more effort.

    If not and you’re happy with rhe lack of closure, you can potentially fix this: kill the old agent (watch out to see if it respawns; if it does and that works, fine). If it doesn’t, you can (a) remove the socket file (b) launch ssh-agent with the righr flag (-a $SSH_AGENT_SOCK iirc) to listen at the same place, then future terminal sessions that inherit the env var will still look in the right place. Unsatisfactory but it’ll get you going again.


  • Okay, that agent process is running but it looks wedged: multiple connections to the socket seem to be opened, probably your other attempts to use ssh.

    The ssh-add output looks like it’s responding a bit, however.

    I’d use your package manager to work out what owns it and go looking for open bugs in the tool.

    (Getting a trace of that process itself would be handy, while you’re trying again. There may be a clue in its behaviour.)

    The server reaponse seems like the handshake process is close to completing. It’s not immediately clear what’s up there I’m afraid.






  • The “why” is that the import system is caching modules in sys.modules.

    The “what to do about it” is “not this”. Use a package layout with explicit names (p1.generic_name etc) instead.

    You can use relative imports under those packages if you prefer (from .generic_name import ...).

    If you want executables on the path look at setup.py or any of the myriad of overlapping modern equivalents that’ll let you specify a command-libe executable to install, then pip install -e . to install it in your venv’s bin dir.



  • If it is the first thing, just put the db setup code you’re using in one file, call it “database.py

    database.py

    # the code you commonly use, ending with
    database = ...
    

    From a second file in the same directory, write: main_program.py

    from database import database
    # The first "database" here is the module name.
    # The second "database" is a variable you set inside that module.
    # You can also write this as follows:
    # import database
    # ... and use `database.database` to refer to the same thing
    # but that involves "stuttering" throughout your code.
    
    # use `database` as you would before - it refers to the "database" object that was found in the "database.py" module
    

    then run it with python main_program.py

    The main thing to realise here is that there are two names involved. One’s the module, the other is the variable (or function name) you set inside that module that you want to get access to.


  • There’s not much here to go on. Are you asking how to write a module that you can import?

    Are these the same set of DB files every time? Are the columns and other configurations the same? Are you writing new python code every month?

    Are you using some ETL process to spit out a bunch of files that you’d like to have imported and available easily? Are the formats the same but the filenames differ?

    I think it’s the first thing you’re after. There are a bunch of tutorials knocking around about this, eg, https://www.digitalocean.com/community/tutorials/how-to-write-modules-in-python-3

    You might also be asking: if I write a module, how do I make it available for all my new python projects to use? You could just copy your whatever-my-module-is-called.py file around to your new projects (this might be simplest) but if you’re also expecting to be updating it and would like all of your projects to use the updated code, there are alternatives. One is to add the directory containing it to your PYTHONPATH. Another is to install it (in edit mode) in your python environment.

    [I get the impression you’re a data person rather than a programmer - perhaps you have a colleague who’s more of the latter you can tap up for this? It doesn’t have to be difficult, but there’s typically a little bit of ceremony involved in setting up a shared module however you choose to do it.]