点子安装 --可编辑原因"running develop, error in 'egg_base' option: 'src' does not exist"



我尝试通过pip3 install --editable安装我自己的python应用程序。但我犯了一个错误,比如";running develop, error in 'egg_base' option: 'src' does not exist";。

该项目具有src文件夹布局。

hyperorg
├── docs
├── README.md
├── src
│   ├── hyperorg
│   │   ├── __init__.py
│   │   └── __main__.py
│   ├── setup.cfg
│   └── setup.py
└── tests

我在hyperorg文件夹中做了pip3 install --editable src,在hyperorg/src文件夹中做pip3 install --editable .,没有明显的差异。

setup.py只是调用setuptools.setup()

以下是我根据中的官方文档构建的setup.cfg中的一些行。

[options]
package_dir=
=src
packages = find:
zip_safe = False
install_requires =
orgparse
[options.packages.find]
where = src
exclude =
docs*
tests*
notes
.gitignore

完全错误输出

$ pip3 install --editable src
Obtaining file:///home/user/tab-cloud/hyperorg/src
Requirement already satisfied: orgparse in /usr/local/lib/python3.9/dist-packages (from Hyperorg==0.0.0a1) (0.3.1)
Installing collected packages: Hyperorg
Running setup.py develop for Hyperorg
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/user/tab-cloud/hyperorg/src/setup.py'"'"'; __file__='"'"'/home/user/tab-cloud/hyperorg/src/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix=
cwd: /home/user/tab-cloud/hyperorg/src/
Complete output (2 lines):
running develop
error: error in 'egg_base' option: 'src' does not exist or is not a directory
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/user/tab-cloud/hyperorg/src/setup.py'"'"'; __file__='"'"'/home/user/tab-cloud/hyperorg/src/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix= Check the logs for full command output.

我想知道running develop是什么意思。

这里的问题是setup.cfgsetup.py文件的位置。

根据另一个项目的经验,出于习惯,我将它们放在了src文件夹中。

hyperorg
├── src
│   ├── hyperorg
│   │   └── ...
│   ├── setup.cfg
│   └── setup.py

这在某些情况下可以工作,但关于setup.cfg使用情况的官方setuptools文档也规定在项目根目录中定位该文件,如下所示。

hyperorg
├── src
│   └── ...
├── setup.cfg
└── setup.py

在这种情况下,我的设置就像一个魅力,不需要修改任何其他文件。我只需要在项目中做根

pip3 install --editable .

错误输出中的字符串develop指向setuptools开发模式。这是因为pip调用中有--editable选项。开发模式的效果是,包不是以通常的方式通过在系统的正确目录中处理py文件来安装的,而是只创建到源文件夹的链接。

编辑:这个答案仍然有效。但请记住,今天的建议是使用pyproject.toml文件,而不是setup.cfg。详细信息可在setuptools文档中找到。

最新更新