Создайте дистрибутив с помощью setuptools на python 3.

Я делаю пакет для подключения к нескольким облачным службам, таким как googlecloud, amazon s3 и sftp/ftp для приложений python, я намерен опубликовать как LGPL в Pypi.

Проблема в том, что я пытаюсь создать дистрибутив с помощью setuptools, но пока безуспешно.

Я следую инструкциям в https://packaging.python.org/tutorials/packaging-projects/ и я выполняю команду python3 setup.py sdist bdist_wheel внутри своего пакета.

Когда я выполняю, я получаю

running sdist
running egg_info
writing cloud_uploader.egg-info/PKG-INFO
writing dependency_links to cloud_uploader.egg-info/dependency_links.txt
writing requirements to cloud_uploader.egg-info/requires.txt
writing top-level names to cloud_uploader.egg-info/top_level.txt
reading manifest file 'cloud_uploader.egg-info/SOURCES.txt'
writing manifest file 'cloud_uploader.egg-info/SOURCES.txt'
running check
creating cloud-uploader-0.1
creating cloud-uploader-0.1/cloud
creating cloud-uploader-0.1/cloud/uploader
creating cloud-uploader-0.1/cloud/uploader/Exceptions
creating cloud-uploader-0.1/cloud/uploader/providers
creating cloud-uploader-0.1/cloud_uploader.egg-info
copying files to cloud-uploader-0.1...
copying README.md -> cloud-uploader-0.1
copying setup.cfg -> cloud-uploader-0.1
copying setup.py -> cloud-uploader-0.1
copying cloud/__init__.py -> cloud-uploader-0.1/cloud
copying cloud/uploader/FileSystem.py -> cloud-uploader-0.1/cloud/uploader
copying cloud/uploader/__init__.py -> cloud-uploader-0.1/cloud/uploader
copying cloud/uploader/Exceptions/SystemExceptions.py -> cloud-uploader-0.1/cloud/uploader/Exceptions
copying cloud/uploader/Exceptions/__init__.py -> cloud-uploader-0.1/cloud/uploader/Exceptions
copying cloud/uploader/providers/AmazonProvider.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud/uploader/providers/BaseProvider.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud/uploader/providers/FtpProvider.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud/uploader/providers/GoogleProvider.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud/uploader/providers/SFTPProvider.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud/uploader/providers/__init__.py -> cloud-uploader-0.1/cloud/uploader/providers
copying cloud_uploader.egg-info/PKG-INFO -> cloud-uploader-0.1/cloud_uploader.egg-info
copying cloud_uploader.egg-info/SOURCES.txt -> cloud-uploader-0.1/cloud_uploader.egg-info
copying cloud_uploader.egg-info/dependency_links.txt -> cloud-uploader-0.1/cloud_uploader.egg-info
copying cloud_uploader.egg-info/requires.txt -> cloud-uploader-0.1/cloud_uploader.egg-info
copying cloud_uploader.egg-info/top_level.txt -> cloud-uploader-0.1/cloud_uploader.egg-info
Writing cloud-uploader-0.1/setup.cfg
Creating tar archive
removing 'cloud-uploader-0.1' (and everything under it)
running bdist_wheel
running build
running build_py
running build_scripts
error: [Errno 2] No such file or directory: ''

Структура проекта

.
├── build
│   ├── lib
│   │   └── cloud
│   │       ├── __init__.py
│   │       └── uploader
│   │           ├── Exceptions
│   │           │   ├── __init__.py
│   │           │   └── SystemExceptions.py
│   │           ├── FileSystem.py
│   │           ├── __init__.py
│   │           └── providers
│   │               ├── AmazonProvider.py
│   │               ├── BaseProvider.py
│   │               ├── FtpProvider.py
│   │               ├── GoogleProvider.py
│   │               ├── __init__.py
│   │               └── SFTPProvider.py
│   └── scripts-3.6
├── cloud
│   ├── __init__.py
│   └── uploader
│       ├── configuration
│       │   ├── ConfigLoader.py
│       │   └── __pycache__
│       │       └── ConfigLoader.cpython-36.pyc
│       ├── Exceptions
│       │   ├── __init__.py
│       │   ├── __pycache__
│       │   │   ├── __init__.cpython-36.pyc
│       │   │   └── SystemExceptions.cpython-36.pyc
│       │   └── SystemExceptions.py
│       ├── FileSystem.py
│       ├── __init__.py
│       └── providers
│           ├── AmazonProvider.py
│           ├── BaseProvider.py
│           ├── FtpProvider.py
│           ├── FtpProvider.pyc
│           ├── GoogleProvider.py
│           ├── __init__.py
│           ├── __pycache__
│           │   ├── AmazonProvider.cpython-36.pyc
│           │   ├── BaseProvider.cpython-36.pyc
│           │   ├── FtpProvider.cpython-36.pyc
│           │   ├── GoogleProvider.cpython-36.pyc
│           │   ├── __init__.cpython-36.pyc
│           │   └── SFTPProvider.cpython-36.pyc
│           └── SFTPProvider.py
├── cloud_uploader.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── dist
│   └── cloud-uploader-0.1.tar.gz
├── README.md
├── setup.cfg
├── setup.py
└── test

Если я попытаюсь установить с помощью pip install из битбуткета

pip install -e git+https://[email protected]/houselandbog/images-uploader@Ftp_Connection_Driver#egg=images_uploader

я получил

Errno 21 [Это каталог] и трассировка, связанная с

До сих пор репо является частным. Но если кто-то хочет мне помочь, я могу опубликовать это как общедоступное.

Заранее спасибо.


person vteran93    schedule 06.08.2019    source источник
comment
Пожалуйста, покажите содержимое setup.py и setup.cfg.   -  person finswimmer    schedule 06.08.2019
comment
Привет, @finswimmer. Вот! setup.py pastebin.com/K5D2pBUd и setup.cfg pastebin.com/6rAkVeVP   -  person vteran93    schedule 07.08.2019


Ответы (2)


@ vteran93 vteran93 Проблема связана с путем, возможно, каталогами пакетов или относительными путями файлов, проверьте файл модуля установки.

person Leonardo J. Caballero G.    schedule 06.08.2019
comment
@vteran93 ознакомьтесь с этим руководством по пакетам Python (учебник на испанском языке), чтобы понять, как распределяются пакеты Python entrenamiento-python-basico.readthedocs.io/es/latest/leccion8/ - person Leonardo J. Caballero G.; 07.08.2019

Вам нужно убедиться, что аргумент ключевого слова scripts в функции setuptools.setup не содержит пустую строку, т.е.

from setuptools import setup
setup(scripts=[''])

будет генерировать ошибку:

running build_scripts
error: [Errno 2] No such file or directory: ''
person alex_lewis    schedule 27.05.2020