正如标题所述,当我python -m build使用版本文件在本地运行时,出现此错误。我已阅读PEP 440,对我来说,它似乎符合要求。我从setuptools 的文档中看不到为什么我会遇到这个问题
我真的很感激对此的一些帮助,因为我不知道如何运行调试器python -m build或进一步了解为什么_parse_versionofsetuptools/config.py对我的版本文件不满意。
更多细节:
我有一个项目结构如下:
src/
mypackage/
__init__.py
VERSION
pyproject.toml
setup.cfg
setup.py
Run Code Online (Sandbox Code Playgroud)
版本
0.0.1
Run Code Online (Sandbox Code Playgroud)
安装程序.cfg
src/
mypackage/
__init__.py
VERSION
pyproject.toml
setup.cfg
setup.py
Run Code Online (Sandbox Code Playgroud)
安装程序.py
0.0.1
Run Code Online (Sandbox Code Playgroud)
pyproject.toml
name = mypackage
version = file: src/mypackage/VERSION
# etc. etc. etc.
Run Code Online (Sandbox Code Playgroud)
有关错误的更多详细信息:
#!/usr/bin/env python
# Used to create editable installs
import setuptools
setuptools.setup()
Run Code Online (Sandbox Code Playgroud) 我有一个脚本找到测试名称,并在我们公司广泛使用.它在命令行上运行,如下所示:
find_test.py --type <type> --name <testname>
Run Code Online (Sandbox Code Playgroud)
在脚本内部相当于:
import argparse
parser = argparse.ArgumentParser(description='Get Test Path')
parser.add_argument('--type', dest='TYPE', type=str, default=None, help="TYPE [REQUIRED]")
parser.add_argument('--name', dest='test_name', type=str, default=None, help="Test Name (Slow)")
parser.add_argument('--id', dest='test_id', type=str, default=None, help="Test ID (Fast)")
parser.add_argument('--normalise', dest='normalise', action="store_true", default=False, help="Replace '/' with '.' in Test Name")
args = parser.parse_args()
Run Code Online (Sandbox Code Playgroud)
(不确定所有这些论点的作用,我个人只使用前两个).然后,这些行由使用这些参数的代码继续.
我想重构这个脚本,以便我可以将其作为模块导入,但也保留其命令行功能 - 因为很多人使用这个脚本,并且在我们的一些csh脚本中也调用它.
到目前为止我已经重构了它,就像这样:
def _main():
<all the former code that was in find_test.py>
if __name__ == "__main__":
_main()
Run Code Online (Sandbox Code Playgroud)
这仍然可以从命令行运行.但我不知道如何在我的父脚本中将相关开关的参数传递给它.
如何进一步重构,然后在父脚本中调用它?这可能吗?
我也不愿意使用我读过的docopts是新的argparse,除非必要 - 即不能用argparse完成,因为它没有在公司范围内安装,这可能是一个艰巨的过程.
我有一个 python 熊猫表,如下所示:
class | id
_____________________
A 12311894945
A 12311760566
A 12311433981
A 12299990440
A 12291758744
B 12311894945
B 12311760566
B 12311433981
B 12299990440
B 12291758744
C 12299990440
C 12291758744
Run Code Online (Sandbox Code Playgroud)
我想获得属于每个类组的唯一 id 值,以便预期结果如下:
[12299990440, 12291758744]
Run Code Online (Sandbox Code Playgroud)
我在想也许是一个 groupby 类和某种交叉,但我看不出这两个操作是如何在 Pandas 中一起完成的。
我想使用re.search来提取第一组非空白字符.我有以下伪文本重新创建我的问题:
#!/usr/bin/env python2.7
import re
line = "STARC-1.1.1.5 ConsCase WARNING Warning"
m = re.search('^[^\S]*?',line)
if m:
print m.group(0)
Run Code Online (Sandbox Code Playgroud)
它似乎是打印空白而不是STARC-1.1.1.5
据我了解,这个正则表达式是这样的: 在行的开头,找到一组非空白字符,不要贪心
我很确定这会工作,文档说我可以使用/ S来匹配[]中的空格,所以我不确定问题出在哪里.
现在,我知道,我知道这可能看起来很奇怪,为什么我不使用其他功能来做到这一点?好吧,有不止一种方法可以给猫皮肤,我仍然在Python中使用正则表达式,因此我想知道如何使用re.search以这种方式提取这个字段.
python ×2
python-3.x ×2
argparse ×1
pandas ×1
python-2.7 ×1
refactoring ×1
regex ×1
setuptools ×1
whitespace ×1