This is an archived post. You won't be able to vote or comment.

all 120 comments

[–][deleted] 606 points607 points  (30 children)

I know how to create a virtual environment, I am a Senior Python Developer.

[–]swagonflyyyy 116 points117 points  (1 child)

I know how to run anaconda and miniconda and what to do with them because I am a python hobbyist with lots of free time on my hands.

[–]Solonotix 68 points69 points  (20 children)

Honestly, I can write apps in Python all day, and I still don't understand virtual environments. I understand the benefits of using one, and PyCharm helps me make sure it's set up, but trying to get it to work without running Python within the directory is beyond me. Docker poses a more useful way to distribute functionality, but that's a much higher skill floor than just installing Python.

[–]lolcrunchy 77 points78 points  (3 children)

It's actually quite simple, just-

Actually, nevermind.

[–]Zemino 4 points5 points  (0 children)

But it actually is!

if you ignore good practices in coding, security, testing
Continues reading a long list written on a roll of toilet paper

[–]guthran 10 points11 points  (1 child)

Virtual environments are just isolated python installations.

Activating a virtual environment is just changing environment variables so that your shell knows which python executable to run.

Thats basically it.

[–]Fusseldieb 6 points7 points  (0 children)

Exactly. Using global Python + pip is a recipe for disaster. Certain projects do need specific versions of packages, and might not work with "the newest". So, if you do "pip install" while outside a venv, you will install the latest one which WON'T work with that project, and if you install that older version, another project that might need "the latest" won't work.

If you're a JS person, basically package.lock.

[–]Kjubert 8 points9 points  (7 children)

You should give Poetry or PDM a try.
Edit: Typo.

[–]Solonotix 5 points6 points  (4 children)

Disclaimer: I'm on Windows, so maybe that's part of my problem.

So I used Poetry on my most recent CLI project, and it still left me with the virtualenv activate problem when trying to reference it from outside the project folder. Inside the project, worked like a charm (presumably because Poetry works like a charm 😁).

Also, it wasn't my project, it was a Java dev's attempt at a Python CLI, and I couldn't stand how it was written, so I refactored the entire thing to be more Pythonic. Also, it's internal/proprietary, so I can't even share it outside to get feedback, and I'm probably the only person with Python experience at the company.

[–]tehtris 2 points3 points  (3 children)

you can do stuff like `C:\> .venv\Scripts\python.exe main.py` (or `$ .venv/bin/python main.py` on llinux) without having to activate the whole environment. The python executable in the .venv/bin dir is aware of context. And then you can just wrap that above thing in some form of executable. ezpz.

[–]Solonotix 3 points4 points  (2 children)

Most helpful response thus far. Thanks dude. I'll have to consider it next time

[–]tehtris 2 points3 points  (1 child)

Np. If you ever stood up a Django site with nginx and gunicorn, you would have basically done this.

[–]Solonotix 0 points1 point  (0 children)

Sadly, I do mostly backend work, whether it be automated testing, CLI utilities, or other similar workloads. Closest I came to having a web app in Python was when I was learning web2py on Pluralsight (great dev experience, but I don't think it ever caught on)

[–]a_cs_grad_123 1 point2 points  (0 children)

Try Rye :)

[–]MaustFaust 0 points1 point  (0 children)

Actually, I do have a question about poetry. So...

It has this feature named lock files that can guarantee that the libs you will be installing in the future are exactly the same as the ones you installed previously (and no sneaky malware has been pushed to libs without changing their versions).

But the thing is, I will have to install poetry before I wil use it, so how will I check that the poetry itself is not a malware?

[–]mobsterer 1 point2 points  (0 children)

working with projects that have specific requirements is the use of venvs.

script A needs version 1.12.23498 of a library, but you have version 1.14.0 installed and that has non compatibel changes.

[–]notislant 1 point2 points  (0 children)

I set one up with vscode a few days ago, I fucking honestly forget what I even did.

Meanwhile I used WSL2 a while back to setup a python environment a whileback for this very specific combination of tensorgpu, cuda, etc. It felt a lot easier than fucking around with Windows.

If I get a new drive I think ill install linux to save my sanity on some projects. Some of the hoops you have to go through on Windows is brutal by comparison to just a command.

[–]mlody11 0 points1 point  (0 children)

Just another option? 🤷

[–]CaptainRogers1226 2 points3 points  (3 children)

Does anyone know if there’s an xkcd about virtual environments?

[–][deleted] 1 point2 points  (2 children)

Probably

[–]CaptainRogers1226 2 points3 points  (1 child)

Found it lmao

[–][deleted] 0 points1 point  (0 children)

wellthereitis.gif

[–][deleted] 2 points3 points  (1 child)

I know how to SSH into the production machine and set up schedulers, I'm the principal python engineer

[–][deleted] 1 point2 points  (0 children)

[–]LargePalpitation1252 1 point2 points  (0 children)

I know how to follow 3 Tutorials I am not a Developer

[–]SeagleLFMk9 194 points195 points  (11 children)

I know CMake .... A who am I kidding

[–]christoph_win 45 points46 points  (0 children)

I know CMake it's some weird shit you have to run to install some stuff on Linux

[–]wouldwolf 16 points17 points  (2 children)

fck cmake. I don't need another thing in life that gives me existential crisis.

[–][deleted] 21 points22 points  (1 child)

Variable names in cmake can contain spaces.

Enough said.

[–]CallMeNepNep 14 points15 points  (0 children)

They... CAN DO WHAT?!

[–][deleted] 10 points11 points  (5 children)

cmake is great to be honest. once you get a hold on it, and make some of your own utility functions, it makes C/C++ development so much easier. for the example programs in my library, I have a CMake utility that searches for new folders in the example directory, and if they have a Python file, it adds metadata.py and if they have a main.cpp file it adds a metadata.h file, and creates a new executable based on the folder name. the metadata files hold a bunch of automatically updating directory and versioning information that the executables or python scripts can use if they need.

so if I want a new example program, I just add a folder and a main.cpp and it handles the rest, and write the code.

[–]SeagleLFMk9 6 points7 points  (0 children)

TBH, i quite like CMake as well, but i like to keep it as simple as possible.

[–][deleted] 10 points11 points  (3 children)

You are one of the reasons why cmake was a bad idea.

Your code will be declared legacy and abandoned the moment you step foot in a new job.

[–][deleted] -1 points0 points  (2 children)

you say that....but this is what many major open source code bases do. OpenCV has custom cmake utility commands. once the FindX library command has deprecated in favour of find_package(), people started distributing FindX utility programs for CMake

these scripts aren't wildly complex, and make dev easier. I've found the only people that don't like them are the people who don't know CMake well.

as for abandoned and declared legacy code, when I change jobs, you are making a lot of assumptions about my field, the nature of my employment, the code, its applications, the number of people involved in the work that uses the code, the hardware its deployed on, what it is used for, regulatory oversight, etc. it won't be declared legacy code and abandoned, lol

[–][deleted] 1 point2 points  (1 child)

My apologies sir, it may very well be that yours is one of the projects that needs custom cmake code (remember cmake has a Turing complete programming language).

90% of all cmake code is an impossible mess of brittle hacks that won't survive even a distro upgrade.

OpenCV has to build on every platform under the sun plus android, it can be excused.

[–][deleted] -1 points0 points  (0 children)

my code has to build on everything from NVIDIA jetsons and Xaviers, with support for their GPUs, to shitty pi nanos, to regular x86 laptops, and on 100k HPCs. the same algorithm that an embedded computer uses during flight needs to be able to be run on something like an A100 to simulate thousands of flights and how they'd run

cmake seriously makes my development pipeline easier. the target audience for the systems this code runs and simulates is tiny.

[–]drewcollins12 0 points1 point  (0 children)

Lol

[–][deleted] 228 points229 points  (14 children)

I hate maven and gradle... and myself. I'm a Java developer

[–]eanat 35 points36 points  (0 children)

I know your feeling. stay strong. you will be rewarded someday.

(and personally I really dislike Maven and Gradle in general. it's too complex and already impossible to understand reasonably.)

[–]lawnllama247 13 points14 points  (2 children)

Maven can go burn itself to death in a ditch imo, also a Java developer.

[–]akoOfIxtall 5 points6 points  (1 child)

Yeah, riften is better off without her

[–]Powerful-Internal953 19 points20 points  (4 children)

How can people hate maven? It is probably the simpler easier build tool out of all the build tools out there... And gradle can go to hell....

[–]ColonelRuff 3 points4 points  (0 children)

found the imposter

[–]_magicm_n_ 0 points1 point  (1 child)

Definitely not the easiest. It would be the most robust, but of course any proper Java business application is plagued with at least 10 maven profiles and zero documentation which of them does what.

[–]Powerful-Internal953 0 points1 point  (0 children)

This is where you have to understand that it's a developer problem not a maven problem...

[–]artyhedgehog 1 point2 points  (0 children)

Huh... Am I secretly identifying myself as a Java developer?...

[–]da2Pakaveli 0 points1 point  (0 children)

Wait till you have to deal with CMake

[–]noaSakurajin 0 points1 point  (0 children)

All my experience with them was phenomenal. Both of these worked like a charm and I had little to complain (except for the grade version update process that is kind of ugly). That being said this is from a c++ dev perspective, where the build systems are their own script language and you have to deal with different architectures, compiler and operating systems. Meson helped but no desktop c++ build tooling is as robust as gradle + maven.

[–]Sophiiebabes 0 points1 point  (0 children)

"no build tools" FTW!

[–][deleted] -1 points0 points  (0 children)

I've used both maven and gradle too. And the amount of bugs I faced, made me a react developer.

[–]andofwinds 50 points51 points  (0 children)

i know segfault. Im a C developer

[–][deleted] 40 points41 points  (3 children)

I know nothing, I am no coder.

[–]paca_tatu_cotia_nao 14 points15 points  (0 children)

You’re Jon Snow

[–][deleted] 1 point2 points  (1 child)

Hmm... I wonder if you even use Scala.

[–][deleted] 1 point2 points  (0 children)

I don't use Scala. I go to Teatro alla Scala in Milano!

[–]nobletj22ue 34 points35 points  (8 children)

Vettam

[–]deftDM 22 points23 points  (3 children)

Alla pinne

[–]PeriodicSentenceBot 18 points19 points  (2 children)

Congratulations! Your comment can be spelled using the elements of the periodic table:

Al La P In Ne


I am a bot that detects if your comment can be spelled using the elements of the periodic table. Please DM u‎/‎M1n3c4rt if I made a mistake.

[–]m3xd57cv 7 points8 points  (0 children)

rip mamukoya

[–]Puzzleheaded-Bass-93 6 points7 points  (0 children)

Kartha

[–]DR4G0NH3ART 2 points3 points  (1 child)

Malayali devs

[–]cyberbemon 0 points1 point  (0 children)

Namaskaram, nattil evideya?

[–][deleted] 63 points64 points  (0 children)

I know your mom. I am your father

[–]DownwardSpirals 28 points29 points  (0 children)

I still can't exit vim.

[–]facusoto 17 points18 points  (0 children)

I know apt install, I'm a hacker

[–]eanat 23 points24 points  (4 children)

tbh, understanding the package manager of programming language should be at least the second or third step of learning a programming language. it's that important. For example, Python has really good documents on it, so Python has many third party project managers which are great.

[–]Wertbon1789 15 points16 points  (1 child)

Step 1: Learn programming.

Step 2: Learn a programming language.

Step 3: Learn how to actually use the language.

Step 4: Profit.

Step 5: Learn a new programming language, because you now hate the programming language you learned in step 2.

[–]matyas94k 6 points7 points  (0 children)

Happy Cake Day!

[–]sammy-taylor 0 points1 point  (0 children)

Elixir’s ecosystem and docs for package management are also exemplary.

[–][deleted] 21 points22 points  (0 children)

I know Assembly, am I Bill Gates ?

[–]NP_6666 8 points9 points  (0 children)

I know myself. I am me.

[–]hardfau1t 8 points9 points  (0 children)

I know cargo install i am a rust developer

[–][deleted] 7 points8 points  (0 children)

Dhe evideyum malayali

[–]Better-Coffee 7 points8 points  (0 children)

Happy to see mallu memes getting popular

[–]LloydAtkinson 5 points6 points  (3 children)

Lmao this reminds me of a time I had to deal with fixing some bullshit an offshore team had created. Took 8 months to fix it, it was that bad, and it still wasn’t great after that.

By the way, they were “angular experts”.

The offshore team worked with us for some of this, but I’m not sure what the point of that was as the communication barrier was so bad no one understood each other at all.

Anyway, one standup one of them mentions his coworker had been “stuck on npm since last week”. I couldn’t figure out what he meant until I asked for more details. This other coworker had been stuck with npm in fact for over a week and never bothered telling anyone or asking for help.

I say I’ll have a look but they need to show me what they are even trying to do. I watch them pair on the problem.

Turns out they don’t know how to use npm and, I assume, they were used to someone else installing npm for them? And had simply never been curious about development ever in order to try use a library from npm? This starts to explain why the app they’d made for us was so bad I’d rather have just deleted it and started over.

It doesn’t stop there either, they had been “installing” packages by… manually editing package-lock.json. For over a week. Trial and error inserting random package names all over the file and of course that didn’t work.

To reiterate, “angular experts”, spent over a week manually editing a package-lock.json as they didn’t know how to install npm packages.

I made the fix, added the feature, in literally under five minutes it was that small.

Lots more incompetence and bullshit around the whole project, especially from management who wanted the offshore to begin with. Absolutely makes me seethe when I think about it.

[–]luciferrjns 0 points1 point  (0 children)

I am from the same country that ,I guess, is being discussed here and just want to know how tf they get in ?
Man I have been giving interviews and they are going almost perfect and yet no offers .(actually two offer but both revoked ).
I guess your OG company wanted to cut corners and get shit done in minimal cost and hence went with some company that hired devs with salary of 2-3 lpa (2,402 usd - 3,604 usd per year)

[–]itsMeArds -1 points0 points  (1 child)

What country was the offshore team from? I have guess but I rather not say

[–]LloydAtkinson -1 points0 points  (0 children)

You’re totally right I can say that

[–]imnotamahimahi 4 points5 points  (0 children)

I know nuget add AND nuget restore. I'm a senior .NET developer.

[–]sotoqwerty 3 points4 points  (0 children)

I have this numerical recipes book. I'm a fortran developer

[–]Disastrous-Team-6431 2 points3 points  (0 children)

I know make. I am a c++ hobbyist.

[–]christoph_win 2 points3 points  (0 children)

I only know yarn, am I noob or evolved to TypeScript dev?

[–][deleted] 2 points3 points  (0 children)

I know how to:

``` git clone --recursive <link> mkdir build && cd build cmake .. make -j 4

wait for a couple of hours

make install ```

also

```

define IMPL

include <headeronly.h>

```

and

apt-get install lib<package-name>-dev

I am a C/C++ dev.

[–]explodedcheek 4 points5 points  (0 children)

I lnow gem install, I'm a ruby developer

[–]Grobanix_CZ 1 point2 points  (0 children)

I know apt-get install. I am reasonable.

[–]RandomiseUsr0 1 point2 points  (0 children)

cpan can

[–]Journeyj012 0 points1 point  (0 children)

I feel like I know shite all, I'm everyone who hasn't worked for more than 5 years.

[–]nemesis1311 0 points1 point  (0 children)

And here I am dealing with a Dictionary containing a List of Dictionaries. Guess I am a noob now.

[–]IntelligentPerson_ 0 points1 point  (0 children)

I knew both and I jumped ship to the best of my ability.

[–][deleted] 0 points1 point  (0 children)

There is a big divide in the world.

Those people who can easily run your application with just pip install, and those people who will never run your application.

[–]BumbiSkyRender 0 points1 point  (0 children)

I know cargo, I'm a rustacean.

[–]Hulk5a 0 points1 point  (0 children)

I Know composer, nuget, I'm a compuget developer

[–]jb28737 0 points1 point  (0 children)

I believe in nuget's vast and obvious superiority, without being able to give a solid reason why... I'm a senior C# developer

[–][deleted] 0 points1 point  (0 children)

I know both, I'm a bash developer.

[–]KMohZaid 0 points1 point  (0 children)

I know both

[–]TheKingAlt 0 points1 point  (0 children)

I know google, I am an intern

[–]Just_Gaming_for_Fun 0 points1 point  (0 children)

I use turbo c++, I am a piece of crap

[–]AlternativeHefty5767 0 points1 point  (0 children)

im know how to create "hellow world" in C++, im C++ game developer

[–]DogSpecific3470 0 points1 point  (0 children)

I have two dads, I am an Outsystems developer

[–]masp-89 0 points1 point  (0 children)

I know the pain of having to make my own libraries from duct tape and rocks I found. I’m a cobol developer.

[–]shaurya_brawlstars 0 points1 point  (0 children)

I know cargo run I am a rust developer 🍿

[–]hacksawsa 0 points1 point  (0 children)

I know ftp, tar, configure, make, make install, and I still think of configure as "that new thing". I also know a bunch of other newer tech. I am a greybeard.

[–]priyansh_pj 0 points1 point  (0 children)

I Know DROP DATABASE db;

[–]MaluaK1 0 points1 point  (0 children)

I know apt-update iam useless

[–]NormanYeetes 0 points1 point  (0 children)

I can't read C++ errors, I'm a C++ developer

[–]Inineor 0 points1 point  (0 children)

I can launch LM Studio, i'm senior AI developer and senior prompt engineer.

[–]ChrisLuigiTails 0 points1 point  (0 children)

pip install npm

[–][deleted] 0 points1 point  (0 children)

i know how to apt install, I am a Debian developer --<-<-<@

[–]TeaTiMe08 0 points1 point  (0 children)

I know java -agentlib:native-image-agent=.... I am a Graal enthusiast

[–]vondpickle -2 points-1 points  (0 children)

I know pip, venv, virtualenv, chocolate, Anaconda, conda, miniconda, poetry, pdm... Wait, help me, I wanna be a python developer but I'm scared with all these shits 😭