• dukk@programming.dev
    link
    fedilink
    arrow-up
    9
    ·
    3 years ago

    Thank god for NixOS. (My daily on my laptop, seriously flakes + nix-direnv is godsend for productivity. Reliable development environments and I don’t have to lift a finger!)

      • dukk@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        3 years ago

        I personally use Neovim (it’s not nearly as much work as people make it out to be), so it’s all integrated within my terminal.

    • haruki@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      3 years ago

      Do you have any troubles running it as your daily OS? Do you use it as your hobby or also for your work?

      I know Nix and use it as my package manager, but I’m not sure about the experience with NixOS. So I’m still reluctant to make the switch.

      • dukk@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        3 years ago

        I just jumped in headfirst. I love it. It’s really just Nix, but with options to configure your whole system to your liking.

        Stability’s been rock-solid and I haven’t yet encountered anything truly headache-inducing.

        Here’s some starter advice:

        • Try to start with flakes. Nix channels are known for being…unreliable at times.
        • Start small, slowly extend. Many people’s Nix configs are often insanely abstracted and modularized. Personally, I started my flake config by installing KDE + Nix, and then linking the configuration.nix to the flake. (Remember, flakes just package the config, they’re not responsible for configuring the system).

        My Nix config is relatively basic (check it out here, so feel free to look around trying to understand it. I’d also suggest using Home Manger if you aren’t already.

        The NixOS forums are great for getting help. I’ll also point you towards the Catppuccin Discord server, the NixOS thread there is filled with many helpful people who helped me get started. (If you decide to swallow the Nix pill, feel free to join and ping me(my username’s Dukk); I’ll add you to the Nix thread).

  • Mikina@programming.dev
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    3 years ago

    I’ve recently discovered pipenv, and it has been a massive QoL improvement. No need to figure out bazillion of commands just to create or start an environment, or deal with what params should you use for it like you do with venv. You just pipenv install -r requirements.txt, and everything is handled for you. And when you need to run it, just pipenv run python script.py and you are good to go.

    The best thing however are the .pipfiles, that can be distributed instead of requirements.txt, and I don’t get why it’s not more common. It’s basically requirements, but directly for pipenv, so you don’t need to install anything and just pipenv run from the same folder.

    • HarryEffingPotter@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      3 years ago

      Yessssss

      I actually wrote a script to make a folder an instant pipenv environment for me. Add it to your ./.zshrc. Has saved me a ton of time, I just removed some spaghetti lines that would reinstall pip and shit because it’s when I was still early days into Py dev, now I work more with Py than I do C# and I’m a senior C# engineer, I just enjoy the masochism of py.

      Also added a check for Arch/Ubu.

      # Automated python virtual environment.
      #######################################
      VENV(){
      if ! [ -x "$(command -v pipenv)" ]; then
           echo "pipenv not installed... installing it now!"
           sudo pip install pipenv
           OS="$( ( lsb_release -ds || cat /etc/*release || uname -om ) 2>/dev/null | head -n1 )"
           if [[ "$OS" == *"buntu"* ]]; then
              sudo apt install pipenv -y
           elif  [[ "$OS" == *"rch"* ]];  then
              sudo pacman -S pipenv
           fi
           pip install pipenv --upgrade
           echo "Installation complete!"
      fi
      if [ -n "$1" ]; then
              echo -e "Args detected, specifically using version $1 of python in this project!"
              version="$1"
      else
              version=$(python -V)
              version=$(echo "$version" | sed -e 's/Python //')
              if [ -z "$version" ]; then
                      version=$(python3 -V)
                      if [ -z "$version" ]; then
                               echo "No python version installed... exiting."
                               return
                      fi
              fi
      fi
      echo -e "\n===========\nCreate a Python $version virtual environment in $PWD/.venv [y/n]?\n==========="
      read -r answer
      case $answer in
          [yY][eE][sS]|[yY])
      export PIPENV_VENV_IN_PROJECT=1
      pipenv --python "$version"
      pipenv install -r ./requirements.txt
      echo -e "\n\n\nVirtual python environment successfully created @ $PWD/.venv!\n"
      echo -e "To run commands from this dir use 'pipenv run python ./main.py'"
      echo -e "To enter a shell in this venv use 'pipenv shell'."
      echo -e "To install from a requirements text file use 'pipenv install -r requirements.txt'"
      echo -e "To update pip + all pip modules use 'pipenv update'!\n"
      echo -e "Additional information can be found @ https://pipenv-fork.readthedocs.io/en/latest/basics.html"
      ;;
          [nN][oO]|[nN])
              echo "Fine then weirdo why did you run the command then, jeez.Exiting"
      ;;
       *)
       echo "Invalid input..."
       ;;
       esac
      }
      
    • wyrmroot@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      3 years ago

      I could redraw this whole chart using only references to pipenv based on my experiences with managing it alongside other tools (especially homebrew). It’s good at many things but is no magic bullet.

    • henfredemars@infosec.pub
      link
      fedilink
      arrow-up
      1
      ·
      3 years ago

      I’ve been burned by pipenv before on a large project where it was taking upwards of 20 minutes to lock dependencies. I think these days they use poetry instead, but I’ve heard the performance is still not very scalable

      With that said, I think it can be a nice addition, but I think it comes down to Python packages not really taking dependency management as a top priority instead of favoring flexibility. This forces a package manager to download and execute the packages to get all the dependency information. Naturally, this is a time-consuming process if the number of packages is large.

      On multiple instances I’ve seen projects abandon it for pip and a requirements.txt because it became unmanageable. It’s left a bad taste in my mouth. I don’t like solutions that claim to solve problems but introduce new ones.

  • jerry@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    3 years ago

    This Helen’s on my laptop from following AI install scripts. I high key hate Python, it’s my hated language and I wish another language was the default for ML.

  • leviosa@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    3 years ago

    Hopefully Mojo will sort it all out. Maybe even inspiring a new, positive streak of xkcd strips in the future?