Published by twine python package does not appear in repository

Viewed 378

I'm trying to publish my python package to private repository. I followed the official guide https://packaging.python.org/en/latest/tutorials/packaging-projects/ and everything seemed to be good. Here's terminal output:

(venv) C:\Users\xxx\PycharmProjects\my_package>twine upload --config-file .pypirc -r pypi dist/*
Uploading distributions to http://xxx/pypi/simple/
Enter your password:
Uploading my_package-0.1-py3-none-any.whl
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 8.03k/8.03k [00:01<00:00, 4.83kB/s]
Uploading my-package-0.1.tar.gz
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 7.40k/7.40k [00:00<00:00, 10.3kB/s]

But after publishing I can't see my package in repository neither by opening url in browser nor I can install it by pip.

I noticed that .whl comes with an underscore in name while .tar.gz comes with a dash. May it be be the issue? How can I find out what is wrong?

1 Answers

Sure, it does not matter whether your package is uploaded to a private or a public repository. You can even not upload it to Git to publish it.

You can do that in 4 basic steps

  • Create a python package
  • Write setup.py
  • Build the package
  • Publish to PyPI via twine

Create a python package

In the following example, the demoverflow folder contains __init__.py, which is making demoverflow a python package.

└── demoverflow
    ├── demo.py
    └── __init__.py
# demo.py

class Demo:
    ...

import Demo at __init__.py to be able to import it from demoverflow (like: from demoverflow import Demo)

# __init__.py

from demo import Demo

Write setup.py

from setuptools import setup, find_packages

setup(
    name="demoverflow",
    version="0.0.1",
    author="Firstname Lastname",
    author_email="<demoverflow@support.com>",
    description="My demo package",
    packages=find_packages(),
    install_requires=[],
    keywords=['python'],
    classifiers=[
        "Development Status :: 1 - Planning",
        "Intended Audience :: Developers",
        "Programming Language :: Python :: 3",
        "Operating System :: Unix",
        "Operating System :: MacOS :: MacOS X",
        "Operating System :: Microsoft :: Windows",
    ]
)

NOTE: Before building the package, you should have the following file structure

├── demoverflow
│   ├── demo.py
│   └── __init__.py
└── setup.py

So setup.py and your package should be a neighbors

Build the package

If you already installed setuptools then can run the following command to generate a dist folder

python3 setup.py sdist bdist_wheel

Publish to PyPI

This command will require the username and password of your PyPI account

python3 -m twine upload dist/*
Related