小编Ant*_*ile的帖子

使用python 3提取7z文件

我试图使用 python 解压缩 7z 文件,但我似乎无法弄清楚。我想我可以在 python 3 中使用 lzma 模块,但我似乎无法弄清楚:

我认为它会像 zipfile 包一样工作:

import lzma
with lzma.open('data.7z') as f:
    f.extractall(r"<output path>")
Run Code Online (Sandbox Code Playgroud)

但在阅读文件后,似乎没有。所以这是我的问题:如何使用标准包提取 7z 文件?我不想调用 subprocess 来使用 7-zip 解压缩文件,因为我不能保证用户安装了这个软件。

我搜索了互联网和堆栈 oerflow 并注意到所有答案几乎都回到使用子处理上,我想像瘟疫一样避免这种情况。

虽然在 stackoverflow 上也有类似的问题,但答案仍然取决于 7-zip 或 7zip SDK。我不想使用 7-zip sdk/exe 进行提取,因为这假设用户已安装该软件。

这是 7z 文件中的属性:

在此处输入图片说明

python 7zip lzma python-3.x

7
推荐指数
1
解决办法
3万
查看次数

pytest AttributeError:“函数”对象没有属性“ get_marker”

我的代码conftest.py如下:

def pytest_collection_modifyitems(config, items):
    items.sort(key=lambda x: 2 if x.get_marker('slow') else 1)
Run Code Online (Sandbox Code Playgroud)

最近,它开始引起以下异常:

$ venv/bin/py.test  -vv --tb=short tests
============================================================================ test session starts ============================================================================
platform darwin -- Python 3.5.6, pytest-4.1.1, py-1.7.0, pluggy-0.8.1 -- /Users/.../venv/bin/python3.5
cachedir: .pytest_cache
rootdir: /Users/..., inifile:
collecting ... INTERNALERROR> Traceback (most recent call last):
INTERNALERROR>   File "/Users/.../venv/lib/python3.5/site-packages/_pytest/main.py", line 203, in wrap_session
...
INTERNALERROR>   File "/Users/.../venv/lib/python3.5/site-packages/pluggy/callers.py", line 187, in _multicall
INTERNALERROR>     res = hook_impl.function(*args)
INTERNALERROR>   File "/Users/.../tests/conftest.py", line 14, in pytest_collection_modifyitems
INTERNALERROR>     items.sort(key=lambda x: 2 if x.get_marker('slow') else …
Run Code Online (Sandbox Code Playgroud)

python pytest

7
推荐指数
1
解决办法
2551
查看次数

预提交的设置环境

如何获取包含环境变量导出的 bash 脚本?

env.sh

...
export VARIABLE=test
...
Run Code Online (Sandbox Code Playgroud)

test_file.py

...
os.environ['VARIABLE'] # Throws KeyError
...
Run Code Online (Sandbox Code Playgroud)

如何使用预提交运行env.sh来设置以下pytest钩子可以使用的环境?

-   repo: local
    hooks:
    -   id: tests
        name: run tests
        entry: pytest -v
        language: system
        types: [python]
Run Code Online (Sandbox Code Playgroud)

pre-commit-hook pytest python-3.x pre-commit.com

7
推荐指数
1
解决办法
1392
查看次数

flake8 和 Pydantic 约束类型的语法错误:constr(regex=)

我在 Python 中使用包 pydantic 和链接器 Flake8。我想将来自 pydantic 的 constr 与常规 Experssion 一起使用。只应传递某些字符。(az、AZ、0-9 和 _)

常规"^[a-zA-Z0-9_]*$"Experssion 有效,但 flake8 向我显示以下错误:

前向注释中的语法错误 '^[a-zA-Z0-9_]*$' flake8(F722)

class RedisSettings(BaseModel):
    keyInput: constr(regex="^[a-zA-Z0-9_]*$") = "" 
    keyOutput: constr(regex="^[a-zA-Z0-9_]*$") = ""
Run Code Online (Sandbox Code Playgroud)

你能帮我避免错误信息吗?

python flake8 pydantic

7
推荐指数
1
解决办法
955
查看次数

挂钩“black”需要预提交版本 2.9.2,但已安装版本 2.6.0

我在预提交和黑色方面遇到了麻烦。

一切工作正常,直到我用 清除缓存pre-commit clean。现在我总是收到错误

该挂钩black需要预提交版本 2.9.2,但已安装版本 2.6.0。也许运行`pip install --upgrade pre-commit

如果我检查我的版本,我正在运行最新的预提交版本 (v2.12.1)。另外,如果我运行推荐的命令,则不会发生任何变化,并且会出现相同的错误。如果我停用black挂钩,错误就会消失,所以我至少知道这是黑色的问题。

我尝试将黑色版本更改为stable最新版本,但没有任何帮助。

我有什么想法可以解决这个问题吗?

我的预提交配置:

  - repo: https://github.com/ambv/black
    rev: stable
    hooks:
      - id: black
        language_version: python3.8
        exclude: |
          (?x)(
              migrations/|
              config/|
              _build/|
              buck-out/|
              build/|
              dist/
          )
Run Code Online (Sandbox Code Playgroud)

非常感谢帮助

python git pre-commit pre-commit-hook pre-commit.com

7
推荐指数
1
解决办法
7911
查看次数

对 black 使用预提交钩子,并为 python 提供多种语言版本

我们使用预提交来使用黑色格式化我们的 Python 代码,并在以下配置中进行配置.pre-commit-config.yaml

\n
repos:\n  - repo: https://github.com/ambv/black\n    rev: 20.8b1\n    hooks:\n      - id: black\n        language_version: python3.7\n
Run Code Online (Sandbox Code Playgroud)\n

由于我们的包在不同的 Python 版本(例如,,3.7)中进行测试和使用,我希望能够在不同的 Python 版本上使用预提交 Hook。但是,当在 Python 上提交代码时,由于我的配置(见上文),我收到错误:3.83.93.8language_version

\n
C:\\Users\\FooBar\\Documents\\Programmierung\\foo (dev -> origin)\n\xce\xbb git commit -m "Black file with correct black version"\n[INFO] Initializing environment for https://github.com/ambv/black.\n[INFO] Installing environment for https://github.com/ambv/black.\n[INFO] Once installed this environment will be reused.\n[INFO] This may take a few minutes...\nAn unexpected error has occurred: CalledProcessError: command: (\'c:\\\\users\\\\FooBar\\\\anaconda\\\\python.exe\', \'-mvirtualenv\', …
Run Code Online (Sandbox Code Playgroud)

python git pre-commit pre-commit-hook pre-commit.com

7
推荐指数
1
解决办法
4237
查看次数

预提交不使用虚拟环境

我将此添加到pre-commit-config.yml

-   repo: local
    hooks:
    -   id: python-hook
        name: python-hook
        entry: python python_script.py
        language: python
        pass_filenames: false
Run Code Online (Sandbox Code Playgroud)

哪里python_script.py有以下内容

#!/usr/bin/env python

import os

print(os.environ["VIRTUAL_ENV"])

import requests

Run Code Online (Sandbox Code Playgroud)

该软件包requests安装在活动虚拟环境中,当我运行预提交时,我得到以下输出

/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7
Traceback (most recent call last):
  File "python_script.py", line 7, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)

这里的问题是虚拟环境的路径显然被切换到了不同的路径/path/to/home/.cache/pre-commit/repouecs3sp4/py_env-python3.7

我在这里缺少什么吗?感谢您的帮助

git pre-commit pre-commit-hook python-3.x pre-commit.com

7
推荐指数
1
解决办法
1万
查看次数

使用预提交时在 VSCode 版本控制中访问 python 解释器

我在大多数 Python 项目中使用预提交,并且在其中许多项目中,我需要使用 pylint 作为本地存储库。当我想要提交时,我总是必须激活 python venv 然后提交;否则,我会收到以下错误:

black....................................................................Passed
pylint...................................................................Failed
- hook id: pylint
- exit code: 1

Executable `pylint` not found
Run Code Online (Sandbox Code Playgroud)

当我使用vscode版本控制提交时,我得到同样的错误;我搜索了这个问题,但没有找到任何解决方案来避免 VSCode 中的错误。

这是我的典型.pre-commit-config.yaml

repos:
-   repo: https://github.com/ambv/black
    rev: 21.9b0
    hooks:
    - id: black
      language_version: python3.8
      exclude: admin_web/urls\.py
-   repo: local
    hooks:
    -   id: pylint
        name: pylint
        entry: pylint
        language: python
        types: [python]
        args: 
         - --rcfile=.pylintrc

Run Code Online (Sandbox Code Playgroud)

python pre-commit pre-commit-hook visual-studio-code pre-commit.com

7
推荐指数
1
解决办法
1630
查看次数

无法使用 pip 在 python 3 中安装 GDAL(clang 失败,退出状态为 1)

sudo pip3.4 install gdal从终端(Mac OS X Mavericks)运行后,我收到一条错误消息,指出'col_port.h'未找到该文件并显示以下错误:(command '/user/bin/clang/ failed with exit status 1完整消息如下)。

我有 gdal 1.11(从 kingchaos.com 下载的完整框架版本)和最新版本的 Xcode 命令行工具 -Apple LLVM version 5.1 (clang-503.0.40)(基于 LLVM 3.4svn)


这是我运行sudo pip3.4 install gdal命令后得到的错误:

/usr/bin/clang -fno-strict-aliasing -Werror=declaration-after-statement -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -arch i386 -arch x86_64 -g -I../../port -I../../gcore -I../../alg -I../../ogr/ -I/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m -I/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/numpy/core/include -I/Library/Frameworks/GDAL.framework/Versions/1.11/include -c extensions/gdal_wrap.cpp -o build/temp.macosx-10.6-intel-3.4/extensions/gdal_wrap.o
extensions/gdal_wrap.cpp:2230:11: warning: explicitly assigning a variable of type 'int' to itself [-Wself-assign]
                    res = SWIG_AddCast(res); …
Run Code Online (Sandbox Code Playgroud)

clang gdal python-3.4

6
推荐指数
1
解决办法
2864
查看次数

pytest 钩子可以使用夹具吗?

我知道夹具可以使用其他夹具,但是钩子可以使用夹具吗?我在网上搜索了很多,但没有得到任何帮助。如果我在这里做错了,有人可以指出吗?

#conftest.py

@pytest.fixture()
def json_loader(request):   
    """Loads the data from given JSON file"""
    def _loader(filename):
        import json
        with open(filename, 'r') as f:
            data = json.load(f)
        return data
    return _loader



def pytest_runtest_setup(item,json_loader): #hook fails to use json_loader
    data = json_loader("some_file.json") 
    print(data) 
    #do something useful here with data
Run Code Online (Sandbox Code Playgroud)

运行时出现以下错误。

pluggy.manager.PluginValidationError: 插件 'C:\some_path\conftest.py' for hook 'pytest_runtest_setup' hookimpl 定义:pytest_runtest_setup(item, json_loader) Argument(s) {'json_loader'} 在 hookimpl 中声明但找不到在钩子规范中

即使我没有将 json_loader 作为 arg 传递给 pytest_runtest_setup(),我也会收到一条错误消息,指出“Fixture“json_loader”被直接调用。Fixtures 并不意味着被直接调用”

python pytest

6
推荐指数
1
解决办法
2973
查看次数