Project having the same name

I’ve been working on a project for a few years now, and I found out recently that the name had been taken.

It’d be a pain to change the name of my project, but I need to publish it to PyPi and readthedocs.io.

Names are “first come, first served”, so you’re out of luck unfortunately. Unless you can negotiate with the owner of the existing project and get them to release the name to you (which might be tricky, as the project seems to be active) there’s not much anyone else can do.

If the author never replies to you, you can try opening a PEP-541 ticket here: Issues · pypa/pypi-support · GitHub

However, beware that PEP-541 only applies if the author is breaking the rules of the platform (not this case) or if the author cannot be contacted. If the author explicitly states that they do not want to give the name to you, then you are out of luck.

Please remember that names on PyPI are used to distribute and install software. If the name is already taken, it means that there may be people who are doing:

pip install futura

If you have taken over the name, this would mean that the above command would suddenly start installing something completely different. Even worse,

pip install -U futura

would replace the installed package with something completely different.

So I’m afraid renaming your project is the only feasible solution here. If you don’t have any other naming ideas, you could e.g. name it arcade_futura or futura_arcade to indicate that it’s related to the arcade library.

2 Likes

Any ideas for a name? I’m probably going to change it something entirely different.

@pf_moore

No. We don’t even know what it does.

I sidestep much of this pain with my own packages by naming them cs.*,
which greatly lessens the chances of a conflict. Barry Warsaw uses
flufl.* (see PEP 401 – BDFL Retirement | peps.python.org).

There’s no need to have a totally funky single word top level name.

Cheers,
Cameron Simpson cs@cskk.id.au

1 Like

It’s a GUI toolkit for the Python Arcade library (https://arcade.academy/). Help appreciated if you have a good name.

Then I’m +1 on Michal’s suggestion of arcade-futura. Simple and evocative of its purpose. Lots of packages have compound names like this, alluding to the main project they assist or work with.

Is there another name I could use? I want it to be completely independent.

There are many. But arcade-futura is independent. There’s no formal relationship here, just evocation of what your package is used with.

Can you have a project that has a ReadTheDocs on

https://some_random_package_Name.readthedocs.io/

and can be installed on pip using

pip install some_random_package_Name

but in code, is referenced as

import random_package

I’m thinking of doing something like that.

Yes. See for example Pillow, which is imported as PIL.

1 Like

But, in that instance, Pillow is a fork of PIL and PIL was discontinued.

Other popular examples (you pip install a project, you import a package):

  • Project scikit-learn: package sklearn
  • Project scikit-image: package skimage
  • Project Jinja2: package jinja
  • Project azure-storage-blob: package azure.storage.blob (in azure namespace (technically azure.storage))
  • Project setuptools: package pkg_resources (not the only package
1 Like

I was just answering the question of if it was technically possible for the package name to be different from the distribution name. There are a number of reasons to make them different.

1 Like

While it is technically possible, I’d personally advise against that. Just as an example I’ve recently faced, MongoDB installs a bson module, and then there is a PyPI bson package that installs a different module with the same name. Now, if MongoDB had originally “claimed” bson we wouldn’t be facing different packages relying on two colliding bson implementations.

1 Like

+100 to this; I was thinking the same thing - glad to see an overt
example cited.

In Pillow’s case it replaces PIL, so you’d almost always have one or
the other and never both.

Generally, I’m against the PyPI name and the import name being
different. People should be able to expect to get what it says on the
label.

Aside: I do wish one could “pip install pypi_name as import_name”, but
that has its own can of worms.

Cheers,
Cameron Simpson cs@cskk.id.au