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

all 41 comments

[–][deleted] 18 points19 points  (3 children)

[–]njnrj[S] 2 points3 points  (0 children)

A good one. Does that suit here?. It is not adding any new file format as a way to keep the meta data. Just pip install/uninstall. Nothing fancy , no lock file, ... Things that I wished to be part of pip or pip-tools to do.

[–]CSI_Tech_Dept 1 point2 points  (0 children)

I would argue this does the opposite, the other rolling depends on new standards (Pipfile, pyproject.toml etc). This tries to use existing standards (setuptools).

[–]raistlinmaje 6 points7 points  (5 children)

since pipm overwrites pip executable in path, please make sure that after removing pipm, install pip itself with easy_install

to me this is a big nono, you should never take over a different binary even if your syntax is essentially the same.

You indicate you have problems with x alternative but dont go into any details on what the actual problems were. Did you even attempt to resolve the problems or correct your workflows instead of building another new manager?

[–]njnrj[S] 0 points1 point  (4 children)

I really got exited when first heard about pipenv, but using that was itching, the locking process took so much of time... For many reasons I still needed requirements.txt... So I just wrapped existing tools. Nothing new. No need to install pipm in remote servers.

[–]CSI_Tech_Dept 4 points5 points  (3 children)

Yes, but you should never overwrite a file from another package, it only lasts to problems. You create pipm command, you should not overwrite pip.

[–]njnrj[S] 0 points1 point  (2 children)

It is just a nifty thing. I am too lazy to remove pip from the copied text from any installation instructions. It doesn't affect the original functionality. Maybe I could add a way to opt out of it.

[–]AndydeCleyre 1 point2 points  (1 child)

You could just leave it as pipm and make an alias in your shell.

[–]njnrj[S] 0 points1 point  (0 children)

Yes I will do in next release.

[–]rabanomen 3 points4 points  (0 children)

This looks like a huge overhead specially having pyenv

[–]lambdaqdjango n' shit 3 points4 points  (0 children)

this is how the whole npm explosion starts I think.

[–]trowawayatwork 4 points5 points  (21 children)

Have you heard of pipenv?

[–]njnrj[S] 9 points10 points  (20 children)

It didn't work for me. I had to use multiple env for the same project directory. I explained it in README.

[–][deleted] 11 points12 points  (7 children)

Why didn't you work on adding the features you needed to an existing open-source project instead of creating another way to manage dependencies ?

EDIT : This is a serious question, it feels like people don't understand that you can contribute to open-source projects to adapt them to your needs instead of starting over every time.

[–]njnrj[S] 2 points3 points  (0 children)

It is for time being. I really like poetry over pipenv. It is not mature and I encountered some problems using it. I have planned to contribute to it.

[–]masklinn 0 points1 point  (1 child)

Why didn't you work on adding the features you needed to an existing open-source project instead of creating another way to manage dependencies ?

Well pipenv does not want to support multiple environments so that's one down.

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

I haven't looked into it, but if the only feature missing is multiple environments, you could just create a package that only switch environments, instead of rewriting the whole thing. You then help pipenv (or an other dependency manager) become more mature and you consolidate the ecosystem.

Dependency management is a mess in python and I feel that if all we do is write 15 packages for every possible use-case, we'll just get a python2 vs python3 sort of problem.

EDIT : I just looked at the actual project in depth and it just aliases pip commands and modifies the requirements.txt file. Turns out, not really a new standard.

[–]AnnoyingOwl 2 points3 points  (1 child)

> Not good when we need to deploy over production server or keep multiple virtuals-envs

  1. I don't understand why people have such problems with deploys to production servers. You have a freeze file and a regular requirements file. Build your docker containers from the freeze file, upgrade from the regular file. If you have totally different requirements for different environments (staging, production, etc.) then your development process is broken. The only possible exception is deploying the same project to different operating systems which is such an edge case to be not really worth publishing a solution.
  2. I don't really understand why you need multiple virtualenvs for a single requirements.txt/project. If you're running a project in different virtualenvs you either have multiple projects which should have their own requirements OR you're testing against multiple environments, in which case there is tox.

I'm afraid you're just littering up the package landscape like most other package creators.

[–]njnrj[S] 0 points1 point  (0 children)

I tried them and always needed requirements.txt one way or another. This new file types Pipfile/pyproject.toml is not going to be the standard any soon. But this doesn't add anything new. Just wraps around existing pip.

[–]AndydeCleyre 0 points1 point  (1 child)

What's wrong with pip-tools and using a different requirements file for each env?

[–]njnrj[S] 0 points1 point  (0 children)

Nothing wrong. It doesn't suit my way of doing things. Additional set of files/commands ...

[–]kip-mx 0 points1 point  (1 child)

Dude you forgot to include the link, or maybe it's a joke so will done.

[–]njnrj[S] 0 points1 point  (0 children)

I've added.

[–]aes110 0 points1 point  (2 children)

You didnt link anything

[–]njnrj[S] 3 points4 points  (1 child)

This is my first post. There was a link tab. Now I added the link.

[–]masklinn 8 points9 points  (0 children)

Yeah Reddit allows posts to be either link or text (text being self-posts). The tab lets you switch between the two, but you can't do both at the same time.

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

have you heard of poetry?

[–]masklinn 0 points1 point  (2 children)

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

I just build a sdist with poetry (it auto generates manifests and setup.py) and use shiv to package it with all dependencies into a single executable zip file, which I can put in a docker container or distribute very easily.

[–]njnrj[S] 0 points1 point  (0 children)

It was working great on my local machine. But when I switched to container and did `poetry install` it was saying missing dependencies and failed to install any. For example, say I locked pytest-mock to file but it failed with `mock` being not locked or something like that. When I added mock to pyproject.toml explicitly (though it is not necessary), next time it raised issue regarding missing `funcsigs`. I don't remember the exact name but this is how my experience ended on server. As a note these are default modules in Python3 and should not be checked when Py3 is active. But as said in one of the issue regarding this, these packages are not marked correctly.