我尝试通过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.cfg
和setup.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
文档中找到。