Error file setup py not found directory cannot be installed in editable mode

13 votes and 3 comments so far on Reddit

Hi all,

I gave poetry a try for some time (I was always a pip setup.py+requirements.txt user) but I must admit, I have grown tired of its slowness and lack of clarity in its documentation.

So, I thought I’d see where pip was in regards to supporting pyproject.toml. It looks like recent versions now support it. I though «yay!». But nay actually.

Because now, when I get this when running pip 19.2.1:

$ pip install -e .
ERROR: File "setup.py" not found. Directory cannot be installed in editable mode: 
(A "pyproject.toml" file was found, but editable mode currently requires a setup.py based build.)

Okay, so I started digging around and what I found was puzzling. The deluge of discussions on pip is amazing but you end up, not feeling any wiser. I tried to follow this thread but at the end of it, I had no idea still, what was the actual status here.

I mean, why would I care for a pyproject.toml if I still need a bloody setup.py file for my development? Well, the doc, while verbose, is not really explaining it well but this blog (notice the name of the article indeed…) seems to indicate you need to specify the build backend. As I understand it, only poetry actually implements it so far (back to square one?). But even when the build-backend is set, I still get the same error message…

So, I’m totally lost. How do you folks cope with the changes in how Python seems to build packages these days? I am so gloriously confused by where we stand in terms of packaging.

Am I doomed to go back to setup.py and requirements.txt? They, at least, seem to work…

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Student

Beginner
Posts: 2
Joined: Sat May 01, 2021 8:55 am

[Crazyflie 2.1] Problem when flashing [SOLVED]

Hey!

I have been setting up my Crazyflie in the past days, following the tutorials with success exactly as laid out in the Documentation. However, I am not able to flash my Crazyflie anymore. After putting in the command «make cload», I get the following console output:

Code: Select all

python3 -m cfloader flash cf2.bin stm32-fw
Restart the Crazyflie you want to bootload in the next 10 seconds...
Failed to flash: 'Bootloader' object has no attribute 'flash_full'

Furthermore, I can’t seem to find ‘flash_full’ in the project, so I reckon it’s part of an external library. However, I have no clue how to solve it as the error just came up out of nowhere.
Since flashing succeeded earlier, I tried to go back to an older commit from last week. Unfortunately, the same error appears.

Help is much appreciated. If there is any important information from my part missing, please let me know.
Thank you.

Last edited by Student on Mon May 03, 2021 7:45 am, edited 1 time in total.

jacobgk2

Beginner
Posts: 12
Joined: Fri Jul 17, 2020 2:46 pm

Re: [Crazyflie 2.1] Problem when flashing

Post

by jacobgk2 » Thu May 27, 2021 6:33 pm

jonasdn wrote: ↑Mon May 03, 2021 4:36 am
Hi Student!

So the flash_fuill method is in the cflib library that we maintain (https://github.com/bitcraze/crazyflie-lib-python). It is only available on the master branch of this repository. And only the master branch of the client (https://github.com/bitcraze/crazyflie-clients-python) uses it.

Are you running the master branch of the client from source? In that case you might want to get the master branch of the cflib as well and install it using:

That should make it work, either that or make sure you use a tagged version of the client instead of the master branch.

Does this method work when using the Virtual Machine as well? I followed the instructions described on the «Getting started with development» tutorial and everything works fine up until the ‘make cload’ command where I run into the same error as Student. I have attempted to unconfigure and reconfigure the USB setup for the radio dongle, I have restarted the Virtual Machine, and I have tried running the ‘make cload’ command both while the Crazyflie is already in Bootloader mode and while it is off.

knuckles904

Beginner
Posts: 7
Joined: Thu Jan 29, 2015 6:10 am

Re: [Crazyflie 2.1] Problem when flashing [SOLVED]

Post

by knuckles904 » Thu Jun 03, 2021 3:26 pm

Hey Jonas, I’m getting the same errors as Student above and jacobbgk2. I’m using VirtualBox 6.1 on Windows 10. The VM image used is 2021.04.

Make is successful with:

Code: Select all

bitcraze@ubuntu:~/projects/crazyflie-firmware$ make
  CLEAN_VERSION
  VTMPL version.c
  CC    version.o
  LD    cf2.elf
  COPY  cf2.hex
  COPY  cf2.bin
  DFUse cf2.dfu
Build for the CF2 platform!
Build 181:23e9b80caa91 (2021.03 +181) MODIFIED
Version extracted from git
Crazyloader build!
Flash |  242984/1032192 (24%),  789208 free | text: 237180, data: 5804, ccmdata: 0
RAM   |   71128/131072  (54%),   59944 free | bss: 65324, data: 5804
CCM   |   58444/65536   (89%),    7092 free | ccmbss: 58444, ccmdata: 0

But make cload is unsuccessful:

Code: Select all

bitcraze@ubuntu:~/projects/crazyflie-firmware$ make cload
python3 -m cfloader  flash  cf2.bin stm32-fw
Restart the Crazyflie you want to bootload in the next
 10 seconds ...
Failed to flash: 'Bootloader' object has no attribute 'flash_full'

Upon using update all projects script, the only error I receive is:

Code: Select all

ERROR: cfclient 2021.4.post13+f25f72d has requirement numpy~=1.19.2, but you'll have numpy 1.20.3 which is incompatible.

Upon using «pip3 install —user -e .» I receive the following error:

Code: Select all

bitcraze@ubuntu:~$ pip3 install --user -e .
ERROR: File "setup.py" not found. Directory cannot be installed in editable mode: /home/bitcraze

Any ideas?

kristoffer

Bitcraze
Posts: 630
Joined: Tue Jun 30, 2015 7:47 am

Re: [Crazyflie 2.1] Problem when flashing [SOLVED]

Post

by kristoffer » Fri Jun 04, 2021 5:37 am

ERROR: File «setup.py» not found. Directory cannot be installed in editable mode: /home/bitcraze

It looks like you are in the wrong directory (/home/bitcraze)

The dot in

is the path to the directory where your crazyflie lib files are located, that is the current directory in this case. Either use cd to go to the crazyflie lib directory first or use the path when calling pip

Code: Select all

pip3 install --user -e /path/to/my/cf/lib/directory

@abn другой способ сделать это — опубликовать каждый коммит в Test PyPI :)

@webknjaz , который определенно setup.py и обработка его аналогично файлу блокировки обеспечивает более широкий диапазон совместимости.

Есть новости по этому поводу?

Dephell сделает это за вас:

dephell deps convert --from pyproject.toml --from-format poetry --to setup.py --to-format setuppy

Или вы можете добавить это к pyproject.toml и просто запустить dephell deps convert :

[tool.dephell.main]
from = {format = "poetry", path = "pyproject.toml"}
to = {format = "setuppy", path = "setup.py"}

Я обновил PR, чтобы он стал новым форматом экспорта вместо новой команды.

Я был бы очень рад получить эту функцию прямо из коробки. Я быстро взглянул на dephell, но тот факт, что он добавил в мой проект почти 30 зависимостей, заставил меня

Одна из веских причин для использования этой функции заключается в том, что вы не можете выполнить pip install -e . если нет файла setup.py.

ERROR: File "setup.py" not found. Directory cannot be installed in editable mode: /home/username/python-tool
(A "pyproject.toml" file was found, but editable mode currently requires a setup.py based build.)

На данный момент приведенная выше команда dephell сделала то, что я искал, но требовала attrs> = 19.2.0. Также у dephell есть 49 зависимостей .

Также у dephell есть 49 зависимостей.

DepHell задуман как внешний инструмент, так как в ваших зависимостях нет поэзии. Рекомендуемый способ установки dephell — curl -L dephell.org/install | python3 , который поместит dephell в свою собственную тюрьму.

Кроме того, большинство зависимостей являются частью собственной экосистемы dephell (https://github.com/dephell/). И даже после этого зависимостей гораздо меньше, чем даже в pip (https://github.com/pypa/pip/tree/master/src/pip/_vendor), единственная разница в том, что они не продаются по уважительным причинам . Установка всех зависимостей с нуля на TravisCI занимает 17 секунд. Итак, это больше о разделении, чем о толстом дереве зависимостей.

Я считаю, что должен указать, что добавление pyproject.toml я упоминал выше, на самом деле не требует от вас добавления dephell в качестве зависимости вашего проекта. Вместо этого у меня есть поэзия и депелл, установленные как часть образа Docker, который я использую для создания наших проектов Python.

Для чего это стоит, здесь есть небольшой скрипт , который сам использует поэзию , чтобы генерировать setup.py . Вроде пока работает нормально.

@albireox приятно, спасибо за сценарий.

Вот еще две версии библиотеки Poetry.

  • В любом виртуальном (pyenv, pipx и т. Д.):

    from pathlib import Path
    from shutil import which
    
    which_poetry = which("poetry")
    with open(which_poetry) as fd:
      shebang = fd.readline()
    poetry_python_lib = next(
      Path(shebang[2:]).parent.parent.glob("lib/python*")
    ) / "site-packages"
    
  • В частности, при установке с pipx , а также с поддержкой Windows:

    import os
    from pathlib import Path
    
    if os.name == "nt":
      poetry_python_lib = Path("~/.local/pipx/venvs/poetry/Lib/site-packages").expanduser()
    else:
      poetry_python_lib = next(
          Path("~/.local/pipx/venvs/poetry/lib").expanduser().glob("python*")
      ) / "site-packages"
    

@pawamoy : спасибо, но у вас есть лишние ) после .parent.parent

Woops, спасибо @ nim65s , поправил сниппет:

Я также добавил поддержку Windows для версии pipx.

Для чего это стоит, здесь есть небольшой скрипт , который сам использует поэзию , чтобы генерировать setup.py . Вроде пока работает нормально.

Есть ли причина, по которой мы не добавляем его в саму poetry ? Отсутствие связи со стандартной компоновкой пакета с setup.py — это то, что может помешать некоторым людям использовать poetry в своих проектах.

Еще одна причина для создания setup.py — это ошибка из tox :

ERROR: File "setup.py" not found. Directory cannot be installed in editable mode: /home/user/code/foo
(A "pyproject.toml" file was found, but editable mode currently requires a setup.py based build.)

РЕДАКТИРОВАТЬ: как указано в следующем комментарии, это была проблема с моими конфигурациями

@RafalSkolasinski setup.py предназначен для использования distutils / setuptools в качестве серверной части сборки. Poetry — это серверная часть сборки, совместимая с setup.py .

@danielhoherd не уверен, что здесь происходит, tox должен работать без файла setup.py . В качестве примера можно посмотреть tox.ini поэзии. Также см. Здесь для получения дополнительной информации.

Было бы неплохо добавить в документацию, почему setup.py не требуется при использовании poetry ?

Есть ли какие-то ограничения на его наличие? Например, могу ли я выполнить команду «pip install -e». или установить прямо с Github?

Изменить: кажется, что отсутствующий setup.py не позволяет установить пакет в редактируемом режиме

machine42 ➜  poetry-demo pip install -e .
Defaulting to user installation because normal site-packages is not writeable
ERROR: File "setup.py" not found. Directory cannot be installed in editable mode: /home/rskolasinski/private/playground/poetry-demo
(A "pyproject.toml" file was found, but editable mode currently requires a setup.py based build.)

что кажется серьезным ограничением для некоторых случаев использования.

Было бы неплохо добавить в документацию, почему setup.py не требуется при использовании poetry ?

Лично я думаю, что последствия PEP 517 уже были документированы в другом месте. Быстрый поиск Google привел меня к этой статье , в котором обобщаются последствия в ноябре, 2018. Там так же является недавно обновленной статья Бретт Cannon здесь , которые я рекомендую.

Было бы неплохо добавить некоторую основную информацию и ресурсы во вводный раздел. С радостью принимаю запросы на вытягивание.

Есть ли какие-то ограничения на его наличие? Например, могу ли я выполнить команду «pip install -e». или установить прямо с Github?

PEP 517 поддерживается pip начиная с версии 19 . Требование наличия файла setup.py для редактируемой установки — это скорее проблема pip чем поэзия. Как упоминалось в статье Бретта выше, вы можете использовать в своем проекте файл прокладки setup.py . Это не то, что требуется для проектов, управляемых поэзией в целом. Нет никаких реальных ограничений, если он не используется, цель состоит в том, чтобы уменьшить количество файлов, необходимых для управления проектом python.

Если ваш проект требует установки в редактируемом режиме, я бы рекомендовал добавить прокладку. Но это не должно быть поведением по умолчанию для проектов, управляемых поэзией.

tox и pip install реализуют PEP для поддержки многих бэкэндов сборки.

pip install -e еще не совместим, но ведутся постоянные обсуждения, чтобы стандартизировать это и заставить его работать. Между тем, каждый инструмент может предоставить индивидуальный способ сделать что-то вроде режима разработки / редактирования (например, flit имеет flit install -s который дает тот же результат).

@abn @merwok Спасибо, ребята, за ответ и ссылки, кажется, мне нужно кое-что почитать; -).
Лично мне никогда не нравились setup.py , я находил, что это немного усложняет ситуацию.

Я вижу, что pip install . работает правильно. Надеюсь, он также будет работать правильно, когда источник находится на GitHub с использованием pip install git+... ?

Я также заметил, что если вручную активировать виртуальную среду (не управляемую поэзией), тогда poetry install будет эквивалентно pip install -e . — так что это тоже меня радует.

Единственное, чего мне не хватает, это эквивалент pip install --user -e .
Я работаю над некоторыми сценариями, которые в идеале должны быть установлены в ~/.local/bin/... и хотел бы установить их там в редактируемом режиме для разработки.

Я вижу, что pip install . работает правильно. Надеюсь, он также будет работать правильно, когда источник находится на GitHub с использованием pip install git+... ?

Должен, да. Поскольку это эквивалентно клонированию локальной копии и выполнению pip install /path/to/clone .

Единственное, чего мне не хватает, это эквивалент pip install --user -e .
Я работаю над некоторыми сценариями, которые в идеале должны быть установлены в ~/.local/bin/... и хотел бы установить их там в редактируемом режиме для разработки.

Если ваша виртуальная среда активна, любые такие сценарии будут доступны на вашем пути, так как /path/to/venv/bin должен быть в вашем PATH .

Если ваша виртуальная среда активна, любые такие сценарии будут доступны на вашем пути, так как /path/to/venv/bin должен быть в вашем PATH .

Я имел в виду установку без virtualenvironment которая была бы эквивалентна установке pip с флагом --user , поскольку он переходит в ~/.local/bin и ~/.local/lib .

Следует учитывать проблему обратной совместимости. Я работаю в среде, которая предполагает, что setup.py является источником правды. Его нужно либо обновить и зафиксировать, либо полностью удалить. Если бы у поэзии была такая возможность, мне было бы легче убедить других начать ее использовать (просто сделав ее необязательной и позволив разработчикам старой школы придерживаться своих старых привычек).

@stevegore

Dephell сделает это за вас:

dephell deps convert --from pyproject.toml --from-format poetry --to setup.py --to-format setuppy

Или вы можете добавить это к pyproject.toml и просто запустить dephell deps convert :

[tool.dephell.main]
from = {format = "poetry", path = "pyproject.toml"}
to = {format = "setuppy", path = "setup.py"}

Формат команды dephell : --from-path вместо --from и --to-path вместо --to .

т.е.

dephell deps convert --from-path pyproject.toml --from-format poetry --to-path setup.py --to-format setuppy

Фактически, поэзия генерирует setup.py при сборке проекта и помещает его в один из файлов dist/*.tar.gz :)
Распакуем его:

$ poetry build
$ tar -xvf dist/*.tar.gz --wildcards --no-anchored '*/setup.py' --strip=1

теперь ваш поэтический проект доступен для редактирования;)

теперь ваш поэтический проект доступен для редактирования;)

В большинстве случаев вы также можете просто использовать регулировочную прокладку.

cat "import setuptools; setuptools.setup()" > setup.py

Обратите внимание, что наличие установочного файла может вызвать некоторые побочные эффекты.

Фактически, поэзия генерирует setup.py при сборке проекта и помещает его в один из файлов dist/*.tar.gz :)
Распакуем его:

$ poetry build
$ tar -xvf dist/*.tar.gz --wildcards --no-anchored '*/setup.py' --strip=1

теперь ваш поэтический проект доступен для редактирования;)

Я получал ошибки с --wildcards и --no-anchored .

Мне кажется, что запуск всего tar -xvf dist/*.tar.gz '*/setup.py' работает.
Затем я запускаю cp $(find . -name setup.py) setup.py чтобы скопировать setup.py в корень моего репо.

Был ли достигнут консенсус по поводу того, следует ли добавлять такой скрипт / инструмент для хранения сгенерированного файла setup.py в саму поэзию?

Я полагаю, это было бы чрезвычайно полезно, по крайней мере, до тех пор, пока pypa, наконец, не решит, что делать, когда вам нужна редактируемая установка только с pyproject.toml .

Была ли эта страница полезной?

0 / 5 — 0 рейтинги

Tried two of the suggested methods for installing this . Here where the results.

On linux Ubuntu, (WSL)

Describe the error

ERROR: Could not build wheels for pycairo which use PEP 517 and cannot be installed directly

Code and Error

pip install manimlib

Error:
Building wheels for collected packages: manimpango
Building wheel for manimpango (PEP 517) … error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 /tmp/tmp4snc243p build_wheel /tmp/tmpbrxfeyzv
cwd: /tmp/pip-install-l4lpjr7c/manimpango
Complete output (31 lines):
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/manimpango
copying manimpango/utils.py -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/_version.py -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/init.py -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/cairo.pxd -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/cmanimpango.pxd -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/glib.pxd -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/pango.pxd -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/register_font.pxd -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/cmanimpango.pyx -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/enums.pyx -> build/lib.linux-x86_64-3.8/manimpango
copying manimpango/register_font.pyx -> build/lib.linux-x86_64-3.8/manimpango
running build_ext
building ‘manimpango.cmanimpango’ extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/manimpango
x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.8 -c manimpango/cmanimpango.c -o build/temp.linux-x86_64-3.8/manimpango/cmanimpango.o
manimpango/cmanimpango.c:641:10: fatal error: glib.h: No such file or directory
641 | #include «glib.h»
| ^~~~~~~~
compilation terminated.
setup.py:92: RuntimeWarning: pkg-config doesn’t exists or doesn’t seem to workWe assume that you give the compiler flags usingcorresponding environment variables.
warnings.warn(
setup.py:92: RuntimeWarning: pkg-config doesn’t exists or doesn’t seem to workWe assume that you give the compiler flags usingcorresponding environment variables.
warnings.warn(
error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1

ERROR: Failed building wheel for manimpango
Failed to build manimpango
ERROR: Could not build wheels for manimpango which use PEP 517 and cannot be installed directly

On windows 10

Describe the error

ERROR: requires a setup.py

Code and Error

Cloning into ‘manim’…
remote: Enumerating objects: 25845, done.
remote: Counting objects: 100% (855/855), done.
remote: Compressing objects: 100% (391/391), done.
remote: Total 25845 (delta 533), reused 675 (delta 385), pack-reused 24990
Receiving objects: 100% (25845/25845), 71.34 MiB | 8.02 MiB/s, done.
Resolving deltas: 100% (18614/18614), done.
$ cd manim/
pip install -e .

ERROR: File «setup.py» not found. Directory cannot be installed in editable mode: /mnt/c/local/dev/cl/fun_with/manim
(A «pyproject.toml» file was found, but editable mode currently requires a setup.py based build.)

Environment

OS System: Ubuntu-20.04 (in WSL/Windows Subsystem for Linux) / windows 10
manim version: I assume it tries to get the latest version
python version: 3.8.10

Any tips on what I should try?

Понравилась статья? Поделить с друзьями:
  • Error file not found with singular glob
  • Error file not found flat assembler
  • Error file not found c windows system32 ftdiun2k ini
  • Error file not found 0x80070002
  • Error file missing from job