pip install --editable cause "running develop, error in 'egg_base' option: 'src' does not exist"
pip install --editable cause "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()
.
这是我根据 official documentatoin.
构建的 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('"'"'\r\n'"'"', '"'"'\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('"'"'\r\n'"'"', '"'"'\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
这在某些情况下可以工作,但官方 setuptools documentation about usage of setup.cfg
也声明要像这样在项目根目录中找到该文件。
hyperorg
├── src
│ └── ...
├── setup.cfg
└── setup.py
在那种情况下,我的设置非常有效,无需修改任何其他文件。我只需要在项目根目录中做
pip3 install --editable .
错误输出中的字符串develop
指向setuptools
的Development Mode。这是因为 pip
调用中的 --editable
选项。 开发模式的效果是包不是通过复制系统正确目录中的 py 文件的通常方式安装的,而只是创建了到源文件夹的链接。
我试图通过 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()
.
这是我根据 official documentatoin.
构建的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('"'"'\r\n'"'"', '"'"'\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('"'"'\r\n'"'"', '"'"'\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
这在某些情况下可以工作,但官方 setuptools documentation about usage of setup.cfg
也声明要像这样在项目根目录中找到该文件。
hyperorg
├── src
│ └── ...
├── setup.cfg
└── setup.py
在那种情况下,我的设置非常有效,无需修改任何其他文件。我只需要在项目根目录中做
pip3 install --editable .
错误输出中的字符串develop
指向setuptools
的Development Mode。这是因为 pip
调用中的 --editable
选项。 开发模式的效果是包不是通过复制系统正确目录中的 py 文件的通常方式安装的,而只是创建了到源文件夹的链接。